【发布时间】:2018-01-17 18:20:24
【问题描述】:
是否可以在没有循环的情况下运行以下代码(最好是 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
【问题讨论】:
-
lapply(1:2, function(i) print(lijst[[i]][lijst2[[i]]])) -
您是否需要出于其他原因将向量放入列表中?否则,您只需运行
vec1[vec3]和vec2[vec4]即可获得相同的结果。 -
感谢你们的快速回复,我编辑了我的原始帖子以表明我的最终目标是什么。