循环遍历R中列表中的项目
Looping through items on a list in R
这可能是一个简单的问题,但我是 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
我已经尝试了一些对我的列表长度进行加法和减法的方法,但它在较低的数字上效果不佳。
我希望这是一个足够清楚的解释,
提前致谢!
这里我们不需要循环,因为 vector
s 可以将长度 >= 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
这可能是一个简单的问题,但我是 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
我已经尝试了一些对我的列表长度进行加法和减法的方法,但它在较低的数字上效果不佳。 我希望这是一个足够清楚的解释,
提前致谢!
这里我们不需要循环,因为 vector
s 可以将长度 >= 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