R 重新定义 base::mean() 函数以包含 is.finite() 功能

cor*_*tle 3 r function mean

我想重新定义均值函数(将其应用到 tabular() 表中),以忽略某个变量的所有 NA、NaN 和 Inf 观测值。我不想删除整行(观察),而是让平均公式简单地计算所有非 NA、NaN、Inf 值的平均值。

Mean.new <- function(x) base::mean(x, na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)

据我所知,标准mean()中的na.rm=TRUE仅删除NA,而不删除NaN和Inf。

因此,如何在上面的代码中添加检查 is.finite() 的功能(这将排除所有 NA、NaN、Inf)?

谢谢你,最好的,

软木

Wal*_*ldi 6

is.finite

mean_new <- function(x) {mean(x[is.finite(x)])}

mean_new(c(NA,Inf,NaN,1,2))

[1] 1.5
Run Code Online (Sandbox Code Playgroud)