检查函数 r 中的参数

check Argument in a function r

我尝试通过检查参数来改进我的功能。似乎它不能正常工作,我的代码中有一点错误。你对我有什么提示吗?

我创建了以下数据集:

data("mtcars")

var_IV <- c("vs" , "am" , "gear") 
var_exogen <- c("disp", "hp", "drat", "wt")

lm.IV <- function(endogen, IV, exogen, df) {
  f <- as.formula(
    paste(endogen, 
          paste(c(IV, exogen), collapse = " + "),
          sep = " ~ "))
  eval(bquote(   lm(.(f), data = df)   )) 
}

mtcars_iv <- lm.IV(endogen = "mpg", 
                IV = var_IV, 
                exogen = var_exogen, 
                df = mtcars)
mtcars_noiv <- lm.IV(endogen = "mpg", 
                  IV = "", 
                  exogen = var_exogen, 
                  df = mtcars)

为了拟合模型,我可以使用全部或仅部分自变量。当我只使用一个部分时,我需要用“”分配它。对于这种情况,我稍微修改了函数:

lm.IV2 <- function(endogen, IV, exogen, df) {
  if (hasArg(IV)) {
    indepVarList <- c(exogen)
  } 
  else {
    indepVarList <- c(IV, exogen)
  }
  f <- as.formula(
    paste(endogen, 
          paste(indepVarList, collapse = " + "),
          sep = " ~ "))
  eval(bquote(   lm(.(f), data = df)   )) 
}

mtcars_noiv2 <- lm.IV2(endogen = "mpg", 
                     exogen = var_exogen, 
                     df = mtcars)

但是我在这里收到错误消息,缺少 IV 参数。

如果我没理解错的话,你可能想要这个:

lm.IV2 <- function(endogen, IV=NULL, exogen, df) {
  if (! is.null(IV)) {
    ...
  } 
  else {
    ...
  }
}