r - 提取 lapply 或 mclapply 结果

标签 r

我目前正在运行许多如下所示的应用行:

test=data.frame(t=seq(1,5,1),e=seq(6,10,1))
mean(apply(test,2,mean))

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

mclapply(test,mean,mc.preschedule=TRUE)

最好不要生成新变量或使用 for 循环。该解决方案应该相当于获取此语句的平均值:

lapply(test,mean)

最佳答案

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

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> 

你也可以这样做

R> lapply(testdf, mean)
$t
[1] 3

$e
[1] 8

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

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

关于r - 提取 lapply 或 mclapply 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3613368/

相关文章:

r - openxlsx 中的换行符

regex - R regex - 匹配直到从末尾开始的第一个字母-空格-数字组合

r - R中的双重居中

r - 如何将颜色和大小的比例组合成一个图例?

r - 错误:attempt to apply non-function

r - 如何使用 dplyr 按组减去值(减去存储为一组的空白)?

r - 如何从R中的字符串中删除+(加号)?

r - 在ggplot2中显示频率和barplot

r - 如何使用饼图来使用facet_wrap?

R代码将大表拆分成较小的.txt文件并保存到计算机?