【问题标题】:create a list of variables in R for use in formula [duplicate]在R中创建一个变量列表以用于公式[重复]
【发布时间】:2012-08-26 19:21:54
【问题描述】:

我有一个数据框 dm 和一些虚拟变量 d1d2d3。我想创建一个列表,dummies,并以简单的方式使用它,例如

lm(y~dummies+x,data=dm)

有可能吗?

我找到了两种方法,但我不喜欢它们:

  1. 创建一个额外的数据框dummies

  2. 使用类似formula(paste('y~',dummies,...)的东西

第一种方法会吃掉内存,第二种方法很丑。有没有更好的办法?

【问题讨论】:

  • 我会走第二条路,没问题。
  • data删除所有其他列,然后使用formula = y ~ .
  • formula 是标准的 R 方法,无论您的审美观点如何。要实现 Andrie 的方法,您可以在 lm 中使用子集数据参数:data=subset(dm, select( c(y,dummies) )
  • @DWin 这是一个不错的成语,但我认为您的意思是data=subset(dm, select=c(y, dummies)),或者确实是data=dm[, c("y", "dummies")],考虑到subset 的固有危险,这样会更安全。
  • 同意你的第一个。关于第二个选项,我认为“傻瓜”不会被扩展,应该是 names(dummies) 未引用。

标签: r regression


【解决方案1】:

构造一个只包含感兴趣的变量的数据框,然后使用y ~ .,表示使用数据框中的所有列。

例如:

set.seed(1)
dm <- data.frame(
  y = rnorm(100),
  x = rnorm(100),
  d1 = sample(0:1, 100, replace=TRUE),
  d2 = sample(0:1, 100, replace=TRUE),
  d3 = sample(0:1, 100, replace=TRUE)
)

lm(y ~ ., dm)
lm(formula = y ~ ., data = dm)

Coefficients:
(Intercept)            x           d1           d2           d3  
  -0.089440    -0.012945    -0.006305     0.391576    -0.034225  

【讨论】:

  • 感谢您的回复,但这不是我要寻找的。我不想创建额外的数据框。我的目标是使用一组假人并以一种漂亮的方式尝试不同的回归器。比如lm(y~dummies+x,data=dm) 和后来的lm(y~dummies+z,data=dm)
猜你喜欢
  • 2020-09-15
  • 2017-01-07
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
  • 2016-03-09
  • 2019-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多