2012-08-26 98 views
1

我有一個數據框dm與一些虛擬變量,d1,d2,d3。我想創建它們的列表,dummies,並使用它以簡單的方式像在R中創建一個變量列表供公式使用

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

這可能嗎?

我已經找到了兩種方式,但我不喜歡他們:

  1. 創建一個額外的數據幀dummies

  2. 使用類似formula(paste('y~',dummies,...)

第一種方法吃內存,第二個就是醜。有沒有更好的辦法?

+2

我會去的第二種方式,沒有異議。 – daroczig

+1

從'data'中刪除所有其他列,然後使用'formula = y〜.' – Andrie

+4

'formula'是標準R方法,無論您的審美觀點如何。要實現Andrie的方法,你可以在'lm'中使用子集數據參數:'data = subset(dm,select(c(y,dummies))' –

回答

2

構建一個僅包含感興趣變量的數據框,然後使用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 
+0

感謝您的回覆,但那不是我正在尋找的。我不想創建一個額外的數據框。我的目標是使用一組假人並以美麗的方式嘗試不同的迴歸者。比如說,'lm(y〜dummies + x,data = dm)'和後面的'lm(y〜dummies + z,data = dm)'。 – Roah

相關問題