在计算中位数时如何将na.rm = TRUE传递给sapply?

时间:2013-01-22 16:32:10

标签: r na sapply na.rm

我创建了一个包含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的主题。例如 How to pass na.rm as argument to tapply?Ignore NA's in sapply function

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

1 个答案:

答案 0 :(得分:32)

只是做:

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

替代方案(基于您的代码)

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