R 线性回归函数调用中如何动态引用数据集
假设我有这样一个函数:R 线性回归函数调用中如何动态引用数据集,r,linear-regression,R,Linear Regression,假设我有这样一个函数: data("mtcars") ncol(mtcars) test <- function(string){ fit <- lm(mpg ~ cyl, data = string) return(fit) } 但是,我得到一个错误: eval(predvars、data、env)中出错:的'envir'参数无效 键入“字符” 我尝试过使用eval和parse的组合,但没有效
data("mtcars")
ncol(mtcars)
test <- function(string){
fit <- lm(mpg ~ cyl,
data = string)
return(fit)
}
但是,我得到一个错误:
eval(predvars、data、env)中出错:的'envir'参数无效
键入“字符”
我尝试过使用
eval
和parse
的组合,但没有效果。有什么想法吗?请尝试对代码进行以下细微更改:
#Code
test <- function(string){
fit <- lm(mpg ~ cyl,
data = eval(parse(text=string)))
return(fit)
}
#Apply
test("mtcars")
请尝试对代码进行以下细微更改:
#Code
test <- function(string){
fit <- lm(mpg ~ cyl,
data = eval(parse(text=string)))
return(fit)
}
#Apply
test("mtcars")
您可以使用get()
按名称搜索对象
test <- function(string){
fit <- lm(mpg ~ cyl, data = get(string))
return(fit)
}
test("mtcars")
# Call:
# lm(formula = mpg ~ cyl, data = get(string))
#
# Coefficients:
# (Intercept) cyl
# 37.885 -2.876
您可以使用get()
按名称搜索对象
test <- function(string){
fit <- lm(mpg ~ cyl, data = get(string))
return(fit)
}
test("mtcars")
# Call:
# lm(formula = mpg ~ cyl, data = get(string))
#
# Coefficients:
# (Intercept) cyl
# 37.885 -2.876
否,在此处使用
get
eval(parse())
不用于此目的(通常应避免使用,有效用例很少)。调试和维护使用eval(parse())
的代码是一场噩梦。它也很慢。不,在这里使用get
eval(parse())
不用于此目的(通常应避免使用,有效用例很少)。调试和维护使用eval(parse())
的代码是一场噩梦。它也很慢。
test <- function(string){
fit <- lm(mpg ~ cyl, data = get(string))
fit$call$data <- as.name(string)
return(fit)
}
test("mtcars")
# Call:
# lm(formula = mpg ~ cyl, data = mtcars)
#
# Coefficients:
# (Intercept) cyl
# 37.885 -2.876