我总是遇到想要在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
内的函数?
答案 0 :(得分:-2)
我们可以使用colMins
matrixStats
library(matrixStats)
colMins(tab, na.rm = TRUE)
当我们不确定如何使用参数时,可以使用匿名函数调用
apply(test, 2, function(x) min(x, na.rm = TRUE))
或者@ahly建议