楼主: dude127
1818 2

[问答] 如何在R语言中写一段函数,可以报出一段向量中连续最多次的次数? [推广有奖]

  • 0关注
  • 0粉丝

学前班

60%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.2285
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
1
精华
0
在线时间
2 小时
注册时间
2020-12-10
最后登录
2022-6-20

楼主
dude127 发表于 2020-12-10 17:02:27 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
如题,举个例子,如果一段向量是(a,a,b,e,f,f,s,s,s,a,v,a,a,a),那么如果我想求的字母是a,得到的结果应该是3。因为在这一段向量中,《连续》出现a的次数最多的一次是3次。先谢谢解答的朋友
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言 编程 R语言

沙发
llb_321 在职认证  发表于 2020-12-10 21:53:19
  1. #示例数据,向量的元素并不限于单字符,字符串或数字均可
  2. dt <- sample(LETTERS[1:5], 100, replace = TRUE)

  3. #函数,只负责你要的结果,别管过程啦
  4. maxConRep <- function (dt) {
  5.   sc <- rep(1, length(dt))
  6.   sn <- rep(0, length(dt))
  7.   j <- 1
  8.   for (i in 2:length(dt)) {
  9.     if (dt[i] == dt[i - 1]) {
  10.       sc[j] <- sc[j] + 1
  11.       sn[j] <- dt[i]
  12.     }
  13.     else
  14.       j <- j + 1
  15.   }
  16.   paste("元素", sn[which.max(sc)], "从向量下标", sum(sc[1:which.max(sc) - 1]) + 1, "起连续重复最大次数", max(sc))
  17. }

  18. #查询,看看是不是你要的东西
  19. maxConRep(dt)
复制代码

藤椅
owenqi 在职认证  学生认证  发表于 2020-12-11 04:25:23
不用谢
  1. arr <- c('a','a','b','e','f','f','s','s','s','a','v','a','a','a')
  2. x <- 'a'

  3. findx <- function(arr, x){
  4.   # convert to binary arr
  5.   arr <- arr == x
  6.   # initialization
  7.   result <- count <- 0
  8.   
  9.   # hit FALSE reset count, hit TRUE update count
  10.   for(i in 1:length(arr)){
  11.     if(!arr[i])
  12.       count <- 0
  13.     else{
  14.       count <- count + 1
  15.       result <- max(result, count)
  16.     }
  17.   }
  18.   return(result)
  19. }

  20. findx(arr, x)
复制代码

参考
https://www.geeksforgeeks.org/maximum-consecutive-ones-or-zeros-in-a-binary-array/

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-23 17:37