在R中将(0,1,0,0,1,1,1)转换为(0,0,0,1,0,1,2)

西奥多

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

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

一个非常优雅的方法是:

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
}

这恰好返回我想要的:

> (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
乔兰

我相信这应该有效:

sequence(rle(x)$lengths) - 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用request.getRemoteAddr()返回0:0:0:0:0:0:0:0:1

cout << 1 && 0;的输出

zookeeper无法打开localhost / 0:0:0:0:0:0:0:0:1:2181的套接字

(假-NOT(0))等于1?

CSS转换。如何从“ matrix(0,1,-1,0,0,0“)获取旋转度值?

将数组转换为0和1

如何使用a [0]-a [0] a [1]-a [0] a [1] a [2]输出数组

为什么(0> 1 + 0> 9)返回False,而((0> 1)+(0> 9))返回0?

我希望输出像[[0,0,0,0,],[0,1,0,0],[0,2,0,0],[0,3,0,0]]

关系0 ... 1在Laravel

拒绝连接:使用gRPC的localhost / 0:0:0:0:0:0:0:1:9000

将(1,1,1)和(0,0,0)以外的BGR通道转换为白色(255,255,255)

(0 * 1 *)*等于(0 | 1)*吗?

有什么办法可以循环通过这些数字:-1 0、1 0、0 -1、0 1

获取所有数组的排列[1,1,1,1,1,0,0,0,0]

将'0'...'n'转换为'0''1'至'n'

Python-0 ** 0 == 1?

使用Scala收集方法可帮助将[0,0,0,1,1,1,1,0,0,1,1]的列表转换为[3,4,2,2]

[“ $ {1:0:1}” ='-']的含义

验证0或1的参数

[$的含义?== 1] &&返回0

提取包含0 | 0,0 | 1,1 | 0和1 | 1的文件

将条件转换为数字 0 1

在python中将Yes转换为1并将No转换为0

索引 = 2 不在 [0, 1)

用于生成 [((0,0),0), ((0,1),0), ((1,0),0), ((1,1),0)] 的代码实际上给出了 [0 , 0, 0, 1, 1, 0, 1, 1],如何解决?

在java中将0x1转换为1

如何在 R 中将文本观察值转换为 1 1 或零 0?

在 Power BI 中将是/否列转换为 1/0