R語言——批量產生公式接口

對於專門搞編程的人來說,R語言在各類編程語言當中應該算是槽點很多的

R語言——批量產生公式接口

變量不用定義不用聲明,語法各種隨性各種不規範,但奇葩就奇葩在,明明啥都沒定義,它卻能怎麼都運行得下去,比方說這樣一行代碼:

plot(-8:8,c(1:10,2:8), "o")

然後它順順當當地給咱出了個圖

R語言——批量產生公式接口

也許自己寫的人還能知道,這行代碼其實完整的表達是這樣的:

plot(<strong>x = c(-8:8<strong>), <strong>y = c(1:10,2:8), <strong>type = "o")

可咱省掉了這麼些東西,它依然能讀得出來,這是為啥咧?因為人家背地裡搞了太多暗搓搓的出廠設置,多到了參數名啥的你愛寫不寫,反正讀得出來就讀,讀不出來就報錯

但這同時也形成了一種特殊的風格,只要你把語言組織出來,然後轉成它能懂的格式,公式神馬的完全可以按文本一樣的方式來生成,而這其中的關鍵函數,叫做as.formula

假設咱現在不幸拿到了一份標題行又寬字兒又多的表格

R語言——批量產生公式接口

這長到夭壽的列名雖說可以一拿到手就先改掉,但總歸會有點擔心後頭排亂了找不回來,尤其是做完標準化的數值,弄丟標題的話那就很難認了

而如果保留這些標題名稱的話,那後頭打公式接口又能直接藍瘦到想哭

這時,咱可以有三種解決方案:

一是按照表格的列編號來提取其中的內容

R語言——批量產生公式接口

這固然能解決一部分問題,但是缺點也很明顯,因為它並不能支持所有的建模函數,連基本款的lm都搞不定

R語言——批量產生公式接口

二是提取出指定要的x列和y列建一個新表格,然後一個y~. 的公式接口乾掉所有

這種方式能用,但是如果碰到需要多次篩選調整自變量的算法,但願親們不會取表名取到腦子暈掉

第三種方法,就是把列名稱單獨拿出來作為文本,用paste函數編輯成公式接口的寫法,再用as.formula轉換格式,示範一下:

就上頭舉例的那個表格,第一列CustomerID是不用放入計算的,第6列MonthlyIncome因為缺失值太多暫時也先不用,因變量y是最後一列SeriousDlqin2yrs

x y F1 
R語言——批量產生公式接口

然後,做建模啥的就可以直接把轉換好的F1代進去用了

glm(F1, FTrain, family = "binomial") 

R語言——批量產生公式接口

而且,再玩得大一點的話,搭配組合函數combn可以直接抽取出不同的自變量組合,批量產生公式的效果真心不是一般的爽

#從現有的自變量中任意減少一列,形成所有新的自變量組合
xminus1 xm1 Fm1
R語言——批量產生公式接口

知識果然可以改變命運(容我擺個剪刀手<strong>c<)~~


分享到:


相關文章: