检查函数r中的参数
我试图通过检查参数来改进我的函数。它似乎不工作的权利,我有一个小错误,在我的代码。你有什么提示给我吗 我创建以下数据集:检查函数r中的参数,r,function,if-statement,lm,R,Function,If Statement,Lm,我试图通过检查参数来改进我的函数。它似乎不工作的权利,我有一个小错误,在我的代码。你有什么提示给我吗 我创建以下数据集: data("mtcars") var_IV <- c("vs" , "am" , "gear") var_exogen <- c("disp", "hp", "drat", "wt") lm.IV &
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)
数据(“mtcars”)
var_IV如果我理解正确,您可能希望:
lm.IV2 <- function(endogen, IV=NULL, exogen, df) {
if (! is.null(IV)) {
...
}
else {
...
}
}
lm.IV2您调用的lm.IV2(endogen=“mpg”,exogen=var\u exogen,df=mtcars)
。正如您所看到的,IV
到lm.IV2
的参数丢失了……只需将IV=var_IV,
添加到调用中……对于缺少IV的情况,我在函数中有这个IF-ELSE语句。但这就是问题所在。它不起作用。来自@kitu的解决方案有效。似乎有必要将参数设置为NULL。
lm.IV2 <- function(endogen, IV=NULL, exogen, df) {
if (! is.null(IV)) {
...
}
else {
...
}
}