r - 将函数应用于向量的索引列表?
问题描述
我有一个X
长度向量和一个可变长度n
索引列表。L
让我们F
成为从 R^m 到 R 的函数。我想将该函数F
应用于每个 subvector 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
,但它似乎不适用于向量 + 索引列表 + 函数的组合。
解决方案
您可以简单地使用lapply
循环您的列表并使用每个元素来子集您的 vector X
。一旦你子集,计算平均值,即
lapply(L, function(i) mean(X[i]))
推荐阅读
- go - 是否可以打印错误?
- javascript - carousel 插件和 jquery 库不能一起工作
- ios - 访问 RLMResults 计数时崩溃
- java - 无法执行 COM 类:com4j.ComException:80040154 CoCreateInstance 失败:类未注册:.\com4j.cpp:153
- sql-server-2014 - SQL Server Management Studio 未连接到服务器
- elasticsearch - 将父文档和子文档合并到一个文档中
- go - 访问嵌入类型导出字段无法正常工作
- canvas - PIXI RenderTexture“直接使用 RenderTexture.create 而不是 ctor”警告
- mongodb - mgo mongodb 读/写示例
- git - 无法 rebase 包括 Git 中的第一次提交?