R 如何对数组和标量使用apply?

R 如何对数组和标量使用apply?,r,R,如果我有一个数组 a = c(1,2,3,1,2,3,1,2,3,1,2,3) 我想对1:3中的每个标量应用“which”函数 l = list() for(i in 1:3){ l[[i]] = which(a == i) } 如何使用apply、lappy、Map将此操作矢量化?lappy的主要参数应该是要结束的列表元素的维度。这是您在示例中循环的内容,因此: a = c(1,2,3,1,2,3,1,2,3,1,2,3) lapply(1:3, function(x) which(a

如果我有一个数组

a = c(1,2,3,1,2,3,1,2,3,1,2,3)
我想对1:3中的每个标量应用“which”函数

l = list()
for(i in 1:3){
 l[[i]] = which(a == i)
}

如何使用apply、lappy、Map将此操作矢量化?

lappy的主要参数应该是要结束的列表元素的维度。这是您在示例中循环的内容,因此:

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)

您是在寻找更一般的方法还是简化这个特定的示例?你可以提供更多的上下文,或者尝试拆分(a),a),第二个是我想要的,我不知道如何在“a”元素上逐个“不应用”函数。我没有考虑其他的论点。非常感谢。