首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中( 0,1,0,0,1,1,1)到(0,0,0,1,0,1,2)的转换

R中( 0,1,0,0,1,1,1)到(0,0,0,1,0,1,2)的转换
EN

Stack Overflow用户
提问于 2016-05-02 14:50:47
回答 1查看 62关注 0票数 3

我认为这是一个相当基本的问题,但我想看看是否有人能想出一个更优雅的解决方案。也许是通过避免for循环。

我想要一个函数,它以1和0的向量作为输入,并返回一个长度相同的向量,它计算相同数目的前几个位置。

这样做的一个相当不雅的方法是:

代码语言:javascript
复制
count_me <- function(x) {
  count_vector <- numeric(length(x))
  for(i in 2:length(x)) {
    if(x[i] == x[i-1]) count_vector[i] <- count_vector[i-1] + 1
  }
  count_vector
}

这正是我想要的:

代码语言:javascript
复制
> (p <- sample(c(0,1), size = 10, replace = TRUE))
 [1] 0 1 0 1 1 0 0 1 1 1
> count_me(p)
 [1] 0 0 0 0 1 0 1 0 1 2
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-02 15:00:07

我认为这样做是可行的:

代码语言:javascript
复制
sequence(rle(x)$lengths) - 1
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36985363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档