2的方法把我的頭頂部可能是:
t<-data.frame(c1=rnorm(10),c2=rnorm(10), c3=rnorm(10))
1-使用formula
,它允許您提供一個字符串作爲一個公式
> f<-function(d,x) lm(formula(paste("c1",x,sep="~")), data=d)
> f(t,"c2")
Call:
lm(formula = formula(paste("c1", x, sep = "~")), data = d)
Coefficients:
(Intercept) c2
-0.1567 -0.4654
2-備選直接加入色譜柱
> f2<-function(d,x) lm(c1 ~ d[,x], data=d)
> f2(t,"c2")
Call:
lm(formula = c1 ~ d[, x], data = d)
Coefficients:
(Intercept) d[, x]
-0.1567 -0.4654
一旦你上的方法解決了動態迴歸功能,您可以把它放在一個for循環
for(col in 4:173) f(t,col)
機會,你想以某種方式使用效果,而不是僅僅打印摘要(也許把這些係數放在一個數據框中並對它們進行圖形化,或者沿着這些線條進行繪製。在這種情況下,我建議您查看plyr
和reshape
包和specficially內的每個
功能melt
和ddply
在這種情況下,你可以做如下
library(melt)
library(plyr)
yvar<-t[,1]
xvars<-melt(t[,-1])
> head(xvars)
variable value
1 c2 -0.8200263
2 c2 -1.5359220
3 c2 -0.2107913
4 c2 -0.2950263
5 c2 0.8231989
6 c2 -0.5971358
betas<-ddply(xvars, .(variable), summarize, beta=coefficients(lm(yvar ~ value))[2])