等同于min()的rowMeans() [英] Equivalent to rowMeans() for min()

查看:131
本文介绍了等同于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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆