将函数应用于向量的索引列表?

我有一个长度为X的向量n和一个可变长度的索引L列表。假设F是从R ^ m到R的函数。我想将函数F应用于每个子向量X[L[[i]]。这是我要计算F( X[ L[[i]] ] )

例如,假设F是均值

set.seed(123)
X <- rnorm(100)
L <- list()
for(i in 1:10) L[[i]] <- sample(1:100,30,replace = FALSE)

通过蛮力我可以算出

out <- vector()
for(i in 1:10) out[i] <- mean(X[ L[[i]] ])

但是,对于较大的尺寸,此for循环相当慢。我想知道是否有更直接的计算方法?我曾尝试使用lapply,但似乎不适用于向量+索引列表+函数的组合。

ccxygc2008 回答:将函数应用于向量的索引列表?

您可以简单地使用lapply遍历列表,并使用每个元素对向量X进行子集化。子集化之后,计算平均值,即

lapply(L,function(i) mean(X[i]))
本文链接:https://www.f2er.com/3165797.html

大家都在问