【问题标题】:How to reuse the call function in r?如何重用r中的调用函数?
【发布时间】:2018-01-29 16:21:48
【问题描述】:

逐步选择方法(MASS 库中的stepAIC)在最后一步提供变量子集。我不想输入最终模型,而是想通过 call 函数来使用它。我不知道该怎么做!下面是一个例子:

x = as.data.frame(matrix(cbind(rnorm(100), rnorm(100, 10), rnorm(100, 100), rpois(100, 4)), 100, 4))
fit = lm(V1 ~., data=x)
st = stepAIC(fit, direction = "both")
st$call
#  lm(formula = V1 ~ 1, data = x)

如何使用st$call进一步使用?我尝试了以下方法,希望它能给我回归结果,但它不起作用:

fm = st$call
summary(call)

感谢任何帮助。

【问题讨论】:

  • eval(st$call)?
  • 您究竟想如何使用它?这个电话只是一个未经评估的表达。你可以用eval()评估它:eval(st$call)
  • @Roland @MrFlick 就是这样。我不知道eval 函数。非常感谢!
  • 我不得不指出应该避免逐步回归:stats.stackexchange.com/questions/20836/…

标签: r


【解决方案1】:

您可以重复使用 eval() 的函数调用。

data(iris)
model <- lm(Sepal.Length~., data = iris)
model
# Call:
#   lm(formula = Sepal.Length ~ ., data = iris)
# 
# Coefficients:
#   (Intercept)        Sepal.Width       Petal.Length        Petal.Width  Speciesversicolor   Speciesvirginica  
# 2.1713             0.4959             0.8292            -0.3152            -0.7236            -1.0235  


eval(model$call)
# Call:
#   lm(formula = Sepal.Length ~ ., data = iris)
# 
# Coefficients:
#   (Intercept)        Sepal.Width       Petal.Length        Petal.Width  Speciesversicolor   Speciesvirginica  
# 2.1713             0.4959             0.8292            -0.3152            -0.7236            -1.0235  

如您所见,两个调用的输出是相同的。

【讨论】:

    【解决方案2】:

    返回所选模型。您可以直接使用st。返回的对象附加了更多信息,因为它是逐步过程的结果,但是返回的对象可以并且应该执行您想要通过“手动”拟合该模型来执行的所有操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 2020-02-12
      • 2018-02-07
      相关资源
      最近更新 更多