首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提取lapply或mclapply结果

提取lapply或mclapply结果
EN

Stack Overflow用户
提问于 2010-09-01 05:26:54
回答 2查看 1.4K关注 0票数 3

我目前正在运行大量的应用程序行,如下所示:

代码语言:javascript
复制
test=data.frame(t=seq(1,5,1),e=seq(6,10,1))
mean(apply(test,2,mean))

我想将第二行代码转换为mclapply,这将产生与lapply相同的结果。我意识到我可以使用for循环从lapply语句中提取每一项,然后在该向量上使用mean,但这会降低性能,而我正试图通过使用mclapply来提高性能。问题是lapply和mcapply都返回一个列表,这意味着不能使用。我可以使用[[]]来获取实际值,也可以使用test$t和test$e,但是test中的列数是可变的,通常会超过1000列。肯定有一种更简单的方法来处理这件事。基本上我想知道这句话的意思:

代码语言:javascript
复制
mclapply(test,mean,mc.preschedule=TRUE)

最好不生成新的变量或使用for循环。解决方案应该等同于获得以下语句的平均值:

代码语言:javascript
复制
lapply(test,mean)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-01 05:34:00

我很困惑-- data.frame毕竟也是list。所以除了显而易见的

代码语言:javascript
复制
R> testdf <- data.frame(t=seq(1,5,1),e=seq(6,10,1))
R> mean(testdf)
t e 
3 8 
R> mean(mean(testdf))
[1] 5.5
R> 

你也可以这样做

代码语言:javascript
复制
R> lapply(testdf, mean)
$t
[1] 3

$e
[1] 8

R> mean(unlist(lapply(testdf, mean)))
[1] 5.5
R> 

因此,对于内部lapply,您可以根据需要使用mclapply,不是吗?

票数 2
EN

Stack Overflow用户

发布于 2015-07-14 02:25:54

我喜欢将mclapply()结果放在一个列表中,然后将这些列表组合起来形成一个最终产品:

代码语言:javascript
复制
results.list <- list()
results.list <- mclapply(listOfData, analysisFunction, mc.cores = 7)

library(data.table)
result <- rbindlist(results.list) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3613368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档