gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:14:10 25 4
gpt4 key购买 nike

我认为这是一个非常基本的问题,但我想看看是否有人可以提出更优雅的解决方案。也许通过避免 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

关于r - 在 R 中将 (0,1,0, 0, 1, 1, 1) 转换为 (0, 0, 0, 1, 0, 1, 2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36985363/

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