使用list的元素来索引/子集R中的其他列表

时间:2017-08-09 18:08:54

标签: r list indexing

是否可以在没有循环的情况下运行以下代码(最好是lapply)?

vec1=c(.1,.2,.3,.4,.5)
vec2=c(2,4,6,8,10)

vec3<-c(1,5)
vec4<-c(2,4)

lijst<-list(vec1,vec2)
lijst2<-list(vec3,vec4)

for (i in 1:2) { 
print(lijst[[i]][lijst2[[i]]])
}

这是一个更大的算法的一部分,我需要优化以减少计算时间。

**编辑**

最后我想将 lijst2 中指示的元素设置为零,因此最终的解决方案应该是以下列表:

[[1]]
[1] 0 0.2 0.3 0.4 0

[[2]]
[1]  2  0  6  0 10

1 个答案:

答案 0 :(得分:1)

这应该给出预期的输出:

mapply(function(x,y) {x[y]=0;x},x=lijst,y=lijst2,SIMPLIFY=FALSE)

输出:

[[1]]
[1] 0.0 0.2 0.3 0.4 0.0

[[2]]
[1]  2  0  6  0 10