等同于min()的rowMeans() [英] Equivalent to rowMeans() for min()
本文介绍了等同于min()的rowMeans()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经在R邮件列表中多次询问此问题,但仍然找不到满意的答案.
I have seen this question being asked multiple times on the R mailing list, but still could not find a satisfactory answer.
假设我是一个矩阵m
m <- matrix(rnorm(10000000), ncol=10)
我可以通过以下方式获得每一行的均值:
I can get the mean of each row by:
system.time(rowMeans(m))
user system elapsed
0.100 0.000 0.097
但是通过
system.time(apply(m,1,min))
user system elapsed
16.157 0.400 17.029
花费的时间超过100倍,是否可以加快速度?
takes more than 100 times as long, is there a way to speed this up?
推荐答案
可以使用pmin
,但是必须将矩阵的每一列都放入一个单独的向量中.一种方法是将其转换为data.frame,然后通过do.call
调用pmin
(因为data.frame是列表).
You could use pmin
, but you would have to get each column of your matrix into a separate vector. One way to do that is to convert it to a data.frame then call pmin
via do.call
(since data.frames are lists).
system.time(do.call(pmin, as.data.frame(m)))
# user system elapsed
# 0.940 0.000 0.949
system.time(apply(m,1,min))
# user system elapsed
# 16.84 0.00 16.95
这篇关于等同于min()的rowMeans()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文