2017-04-26 64 views
0

我总是碰到想要使用函数的参数到apply函数的问题。我环顾四周,但我无法找到合适的答案...如何在函数参数中包含函数参数?

例如

我有一个像

dput (tab) 

> structure(c(108.13, 108.13, 107.7, 107.66, 107.65, NA, NA, 115.56, 
115.5, 115.45, NA, NA, NA, 122.72, 122.66, 124.81, 124.82, 124.87, 
124.91, 124.94, NA, NA, NA, NA, 130.18), .Dim = c(5L, 5L), .Dimnames = list(
    NULL, NULL)) 

一个简单的矩阵我想要得到的最低每列。

我会做这样的事情:

apply (test, 2, min) 
> 107.65  NA  NA 124.81  NA 

但现在,让我们说,我想跳过NAs

第一列,我会做

min (test[,1], min(na.rm = TRUE)) 
> 107.65 

但我不能用

apply (test, 2, min(na.rm = TRUE)) 

所以,我怎么传递参数给内部apply的功能?

+5

'apply(test,2,min,na.rm = T)'See this http:// stackoverflo w.com/questions/14427253/passing-several-arguments-to-fun-of-lapply-and-others-apply – ahly

回答

-2

我们可以从matrixStats

library(matrixStats) 
colMins(tab, na.rm = TRUE) 

使用矢量colMins当我们不知道如何使用的参数,匿名函数调用可用于

apply(test, 2, function(x) min(x, na.rm = TRUE)) 

或以其他@ahly建议