16

我创建了一个带有 3 个变量的数据框“杀手”。尽管始终存在NA值,但数据是数字的。

我的目标是计算 3 个变量中每一个的平均值。

sapply(killers, function(x) median)

这将返回:

$heartattack
function (x, na.rm = FALSE) 
UseMethod("median")
<bytecode: 0x103748108>
<environment: namespace:stats>

我知道这个na.rm论点是一种忽略NA价值观的手段。由于na.rm = FALSE存在于 R 返回的内容中,因此假设有一种方法可以TRUE在上面的代码行中将其设置为。我尝试了一些变化:

sapply(killers, na.rm=TRUE function(x) median)
sapply(killers, function(x) median, na.rm=TRUE)
sapply(killers, function(x) median(na.rm=TRUE))

我不确定我是否接近或者这是否会涉及嵌套函数,正如其他类似的(尽管在我可以看到的这种情况下最终没有帮助)关于 SO 的主题的帖子。例如 ,如何将 na.rm 作为参数传递给 tapply?, 忽略 sapply 函数中的 NA

当然,我可以只计算用于创建杀手的每个向量的平均值,但如果我的要求是可能的,那就更好了。

4

1 回答 1

38

做就是了:

sapply(killers, median, na.rm = TRUE)

另一种方法是(根据您的代码)

sapply(killers, function(x) median(x, na.rm=TRUE)) 
于 2013-01-22T16:33:35.780 回答