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<)~~


分享到:


相關文章: