gpt4 book ai didi

r - 将零和一的向量转换为组

转载 作者:行者123 更新时间:2023-12-04 23:40:51 26 4
gpt4 key购买 nike

我有一个由零和一组成的向量,例如:

x <- c(0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,1)

我需要将此向量转换为另一种形式:
c(0,0,1,1,1,0,0,0,0,2,2,2,0,0,3)

其中后续的自然数将指示来自该块位置的原始向量的“1”块的数量。
基本上我需要能够快速计算的解决方案( x 向量通常至少 > 30k 长,并且在一次运行中会有多个这样的向量)。

任何不涉及“for”循环的想法?

最佳答案

这似乎和我能找到的一样快。除了最大的向量之外,此中提供的所有选项和@akrun 的答案都将是几分之一秒。

replace(x, x!=0, cumsum(diff(c(0,x)==1)[x!=0]) )
# [1] 0 0 1 1 1 0 0 0 0 0 2 2 2 0 0 3

还有一种可能毫无意义的方法:
replace(x, x!=0, factor(cumsum(x==0)[x!=0]) )
# [1] 0 0 1 1 1 0 0 0 0 0 2 2 2 0 0 3

关于r - 将零和一的向量转换为组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38009542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com