检查函数 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 {
...
}
}
我尝试通过检查参数来改进我的功能。似乎它不能正常工作,我的代码中有一点错误。你对我有什么提示吗?
我创建了以下数据集:
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 {
...
}
}