循环浏览R中列表上的项目

时间:2019-09-24 16:44:33

标签: r list addition

这可能是一个简单的问题,但我对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

我尝试了一些添加和减去列表长度的操作,但是在较小的数字上效果不佳。 我希望这是一个足够清晰的解释,

提前谢谢!

1 个答案:

答案 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