如何在应用系列中包含函数参数? [复制]
Posted
技术标签:
【中文标题】如何在应用系列中包含函数参数? [复制]【英文标题】:How to include function arguments in apply family? [duplicate] 【发布时间】:2017-04-26 17:14:24 【问题描述】:我总是遇到想将函数的参数用于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
中的函数?
【问题讨论】:
apply(test, 2, min, na.rm = T)
看到这个***.com/questions/14427253/…
【参考方案1】:
我们可以使用来自matrixStats
的矢量化colMins
library(matrixStats)
colMins(tab, na.rm = TRUE)
当我们不确定如何使用参数时,可以使用匿名函数调用
apply(test, 2, function(x) min(x, na.rm = TRUE))
或者@ahly 建议的其他方式
【讨论】:
以上是关于如何在应用系列中包含函数参数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在用于部署的服务结构应用程序包中包含发布配置文件和应用程序参数?
如何在 Java 中的 Prepared Select 语句中包含参数? [复制]
如何在任意方法名称上使用的 @Timed 注释中包含方法参数