我尝试创建一个函数来计算协方差,如下所示:
covar <- function(x){ coef<-sd(x)/mean(x)*100 return(coef) }
有时当我尝试运行下面的函数时,会出现以下输出:
covar(df$var_leilao) [1] NA
我认为这是由于我有一些缺失值,我想在函数中放置一个na.rm = TRUE参数,以运行如下内容:
na.rm = TRUE
covar(df$var_leilao, na.rm = TRUE)
我该怎么做?
bybem2ql1#
你只需要给你的函数添加一个参数,然后在函数体的适当位置引用它的值。这里我添加了一个名为“na.rm”的额外参数,它依次被mean和sd引用。通过在函数签名中指定na.rm = TRUE,我告诉R该参数的默认值为TRUE。调用covar(x)与调用covar(x, na.rm = TRUE)相同。
mean
sd
covar(x)
covar(x, na.rm = TRUE)
covar <- function(x, na.rm = TRUE) { coef <- sd(x, na.rm = na.rm) / mean(x, na.rm = na.rm) * 100 return(coef) }
ni65a41a2#
你可以通过在sd()和mean()函数中合并一个na.rm语句来做到这一点:
# Create variable var_leilao <- c(seq(1, 100), NA) # Co-variance function with na.rm (TRUE by default) covar <- function(x, na.rm = TRUE) { coef <- sd(x, na.rm = na.rm) / mean(x, na.rm = na.rm) * 100 return(coef) } # Without NAs covar(var_leilao) # With NAs covar(var_leilao, na.rm = FALSE)
2条答案
按热度按时间bybem2ql1#
你只需要给你的函数添加一个参数,然后在函数体的适当位置引用它的值。这里我添加了一个名为“na.rm”的额外参数,它依次被
mean
和sd
引用。通过在函数签名中指定
na.rm = TRUE
,我告诉R该参数的默认值为TRUE。调用covar(x)
与调用covar(x, na.rm = TRUE)
相同。ni65a41a2#
你可以通过在sd()和mean()函数中合并一个na.rm语句来做到这一点: