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

Dou*_*Fir 14 r sapply na na.rm

我创建了一个包含3个变量的数据帧"杀手".尽管存在NA整个值,但数据是数字的.

我的目标是计算3个变量中每个变量的均值.

sapply(killers, function(x) median)
Run Code Online (Sandbox Code Playgroud)

返回:

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

我知道这个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))
Run Code Online (Sandbox Code Playgroud)

我不确定我是否接近或者是否会涉及嵌套功能,因为其他类似的(尽管在这个实例中我最终没有帮助)我会在SO主题上发布帖子.例如, 如何将na.rm作为参数传递给tapply?, 忽略NA的功能

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

Jil*_*ina 33

做就是了:

sapply(killers, median, na.rm = TRUE)
Run Code Online (Sandbox Code Playgroud)

另一种选择(根据您的代码)

sapply(killers, function(x) median(x, na.rm=TRUE)) 
Run Code Online (Sandbox Code Playgroud)

  • 很有帮助!`sapply(killers, function(x) Median(x, na.rm=TRUE))` 最适合我 (3认同)