如何在apply family中包含函数参数?

时间:2017-04-26 17:14:24

标签: r

我总是遇到想要在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内的函数?

1 个答案:

答案 0 :(得分:-2)

我们可以使用colMins

中的矢量化matrixStats
library(matrixStats)
colMins(tab, na.rm = TRUE)

当我们不确定如何使用参数时,可以使用匿名函数调用

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

或者@ahly建议