如果我有一个数组
a = c(1,2,3,1,2,3,1,2,3,1,2,3)
我想应用""在1:3中对每个标量起作用
l = list()
for(i in 1:3){
l[[i]] = which(a == i)
}
如何使用apply,lapply,Map?
对此操作进行矢量化答案 0 :(得分:2)
lapply
的主要参数应该是您希望最终得到的列表元素的维度。您在for
示例中循环的是哪个,所以:
a = c(1,2,3,1,2,3,1,2,3,1,2,3)
lapply(1:3, function(x) which(a == x))
或者,如果您不想将a
编码到匿名函数中,您可以使用:
lapply(1:3, function(x, y) which(y == x), y = a)