使用一个向量中的值更改R(for循环)中另一个向量中的值
我需要改变一个向量中的某些值,这取决于另一个向量中相同位置的值。下面是我的向量:使用一个向量中的值更改R(for循环)中另一个向量中的值,r,for-loop,if-statement,iteration,R,For Loop,If Statement,Iteration,我需要改变一个向量中的某些值,这取决于另一个向量中相同位置的值。下面是我的向量: r <- (1:20) a <- c(54,54,54,54,55,55,50,0,0,0,0,0,0,1,1,1,1,1,56,57) 我如何让它返回正确的结果,应该是这样的: [1] 1 2 3 4 5 6 7 7 8 9 10 11 12 13 14 15 16 17 19 20 谢谢大家! 我们可以在序列中循环 for(i in seq_along(a)) if(a[i] >=0 &a
r <- (1:20)
a <- c(54,54,54,54,55,55,50,0,0,0,0,0,0,1,1,1,1,1,56,57)
我如何让它返回正确的结果,应该是这样的:
[1] 1 2 3 4 5 6 7 7 8 9 10 11 12 13 14 15 16 17 19 20
谢谢大家! 我们可以在序列中循环
for(i in seq_along(a)) if(a[i] >=0 && a[i] < 20) r[i] <- r[i] -1
r
#[1] 1 2 3 4 5 6 7 7 8 9 10 11 12 13 14 15 16 17 19 20
由于r[54]不存在,因此不使用“a”的值,而在该元素上赋值会导致NA我们可以在序列中循环
for(i in seq_along(a)) if(a[i] >=0 && a[i] < 20) r[i] <- r[i] -1
r
#[1] 1 2 3 4 5 6 7 7 8 9 10 11 12 13 14 15 16 17 19 20
因为r[54]不存在,所以不使用“a”的值,而在该元素上赋值会导致NA也许这会有所帮助
r <- (1:20)
a <- c(54,54,54,54,55,55,50,0,0,0,0,0,0,1,1,1,1,1,56,57)
r[a >= 0 & a < 20] <- r[a >= 0 & a < 20] - 1
# [1] 1 2 3 4 5 6 7 7 8 9 10 11 12 13 14 15 16 17 19 20
这里不需要循环,上面的答案是最有效的。也许这会有帮助
r <- (1:20)
a <- c(54,54,54,54,55,55,50,0,0,0,0,0,0,1,1,1,1,1,56,57)
r[a >= 0 & a < 20] <- r[a >= 0 & a < 20] - 1
# [1] 1 2 3 4 5 6 7 7 8 9 10 11 12 13 14 15 16 17 19 20
这里不需要循环,上面的答案是最有效的。我想一个紧凑的基本R解决方案是使用ifelse 给
> ifelse(a>=0 & a< 20,r-1,r)
[1] 1 2 3 4 5 6 7 7 8 9 10 11 12 13 14 15 16 17 19 20
我想一个紧凑的基本R解决方案是使用ifelse 给
> ifelse(a>=0 & a< 20,r-1,r)
[1] 1 2 3 4 5 6 7 7 8 9 10 11 12 13 14 15 16 17 19 20
你可以做:
r - (a >= 0 & a < 20)
[1] 1 2 3 4 5 6 7 7 8 9 10 11 12 13 14 15 16 17 19 20
你可以做:
r - (a >= 0 & a < 20)
[1] 1 2 3 4 5 6 7 7 8 9 10 11 12 13 14 15 16 17 19 20
感谢到目前为止回答问题的人!我也刚刚意识到一个潜在的问题。这些向量只是我目前实际处理的数据片段r'向量实际上是一天中的一个小时,所以0到23个小时重复,有些小时在这里或那里缺失,重复大约3个月。例如,如果将此代码用于小时0,则从中减去1将使小时为-1,但我希望它是小时23或之前的任何小时数。您在下面发布的解决方案是否仍然适用?请让我知道,谢谢你。谢谢你到目前为止的回答!我也刚刚意识到一个潜在的问题。这些向量只是我目前实际处理的数据片段r'向量实际上是一天中的一个小时,所以0到23个小时重复,有些小时在这里或那里缺失,重复大约3个月。例如,如果将此代码用于小时0,则从中减去1将使小时为-1,但我希望它是小时23或之前的任何小时数。您在下面发布的解决方案是否仍然适用?请让我知道,谢谢。