这可能是一个简单的问题,但我对R还是很陌生。 我想做的是对列表的索引执行某种加法,但是一旦达到最大值,它就会回到该列表中的第一个值并从那里开始。
例如:
x <-2
data <- c(0,1,2,3,4,5,6,7,8,9,10,11)
data[x]
1
data[x+12]
1
data[x+13]
3
或功能上等效的东西。最后,我希望能够做类似的事情
v=6
x=8
y=9
z=12
values <- c(v,x,y,z)
data <- c(0,1,2,3,4,5,6,7,8,9,10,11)
set <- c(data[values[1]],data[values[2]], data[values[3]],data[values[4]])
set
5 7 8 11
values <- values + 8
set
1 3 4 7
我尝试了一些添加和减去列表长度的操作,但是在较小的数字上效果不佳。 我希望这是一个足够清晰的解释,
提前谢谢!
答案 0 :(得分:1)
我们这里不需要循环,因为vector
可以将长度大于等于1的向量作为索引
data[values]
#[1] 5 7 8 11
注意:两个对象都是vector
而不是list
如果我们需要重置索引
values <- values + 8
ifelse(values > length(data), values - length(data) - 1, values)
#[1] 1 3 4 7