我如何使用数组和标量应用?

时间:2016-08-20 10:43:04

标签: r

如果我有一个数组

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?

对此操作进行矢量化

1 个答案:

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