我有一個數據框dm
與一些虛擬變量,d1
,d2
,d3
。我想創建它們的列表,dummies
,並使用它以簡單的方式像在R中創建一個變量列表供公式使用
lm(y~dummies+x,data=dm)
這可能嗎?
我已經找到了兩種方式,但我不喜歡他們:
創建一個額外的數據幀
dummies
。使用類似
formula(paste('y~',dummies,...)
第一種方法吃內存,第二個就是醜。有沒有更好的辦法?
我有一個數據框dm
與一些虛擬變量,d1
,d2
,d3
。我想創建它們的列表,dummies
,並使用它以簡單的方式像在R中創建一個變量列表供公式使用
lm(y~dummies+x,data=dm)
這可能嗎?
我已經找到了兩種方式,但我不喜歡他們:
創建一個額外的數據幀dummies
。
使用類似formula(paste('y~',dummies,...)
第一種方法吃內存,第二個就是醜。有沒有更好的辦法?
構建一個僅包含感興趣變量的數據框,然後使用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)'。 – Roah
我會去的第二種方式,沒有異議。 – daroczig
從'data'中刪除所有其他列,然後使用'formula = y〜.' – Andrie
'formula'是標準R方法,無論您的審美觀點如何。要實現Andrie的方法,你可以在'lm'中使用子集數據參數:'data = subset(dm,select(c(y,dummies))' –