[英]Creating a for-loop where i identifies data by column in R
我正在嘗試使用一個for循環來創建一系列GAM模型的摘要,這些模型使用年中的平滑術語(DOY)以及結合天氣的線性預測變量(有很多這些)。 我做了一個運行和輸出模型摘要的函數:
gamlin <- function(x) {
m <- gam(Log10E ~ s(DOY) + x, data=eggseasongam)
return(summary(m))
}
我想我想在for循環中使用上述內容,該循環將第4到173列中的天氣預報作為x,但是正在為此而努力。 任何建議將不勝感激。
謝謝,邁克
我頭頂上的兩種方法可能是:
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])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.