2015-12-05 59 views
0

我首先使用grep來獲取以前言開頭的所有變量名稱:「h_」。然後我將該數組摺疊成一個單獨的字符串,並用加號分隔。有沒有辦法在線性迴歸中隨後使用此字符串?R:在迴歸中使用包含變量名稱的字符串

例如:

holiday_array <- grep("h_", names(df), value=TRUE) 
holiday_string = paste(holiday_array, collapse=' + ') 
r_3 <- lm(log(assaults) ~ year + month + holiday_string, data = df) 

我得到了簡單的錯誤variable lengths differ (found for 'holiday_string')

我能做到這樣的,例如:

holiday_formula <- as.formula(paste('log(assaults) ~ attend_v + year+ month + ', paste("", holiday_vars, collapse='+'))) 
    r_3 <- lm(holiday_formula, data = df) 

但我不希望有爲每組新控件鍵入一個單獨的公式構造。我希望能夠在lm函數中添加「字符串」。這可能嗎?

以上是有問題的,因爲我們說,我想再加入另一組控制變量包含在holiday_formula式的,所以這樣的事情:

weather_vars < - grep的(「W_」,名稱(DF),值= TRUE)weather_formula < - as.formula(粘貼(holiday_formula,粘貼( 「+」,weather_vars, 崩潰= '+')))

不知道你會怎麼做以上。

+0

http://stackoverflow.com/questions/6065826/how對一個變量序列的迴歸 - 沒有鍵入每個變量nam?rq = 1 – atiretoo

+0

我看到了,但我不想構造一個新的「 as.formula()「呼籲每一次迴歸。我希望能夠像上面試過的那樣使用holiday_string來明確每個迴歸與前一個迴歸是如何不同的。有沒有辦法做到這一點。例如,我想要做一些類似'year + month + as.formula(holiday_string)'的事情,但我不能。 – Parseltongue

+0

開箱即用,我不這麼認爲。 holiday_string是一個字符串,並且log(攻擊)〜year + month是一個公式。我想你可以重載'+'函數,以便識別一側的字符串和另一側的公式,並將它們與as.formula(paste(...))粘在一起。 – atiretoo

回答

2

不知施工比您拒絕所述一個不同的公式的參數的簡單方法(雖然我考慮和使用update.formula因爲它也使用as.formula需要拒絕),但是這是一個可選方法達到相同的目標。它使用 - R-式的擴展功能,並且依賴於[ -function的接受字符參數爲列選擇的能力。「」:

r_3 <- lm(log(assaults) ~ attend_v + year+ month + . , 
      data = df[ , c('assaults', 'attend_v', 'year', 'month', holiday_vars]) 
+0

絕對夢幻般的發現。我不知道這個功能。非常感謝 – Parseltongue

相關問題