2016-11-14 44 views
1

在多級模型中是否有一種簡單的方法來使用數據框的每一列(一次一個)?我發現this後,但它提供了DV,使用其他列作爲IV。我試圖做opposite-有一個未知的DV,並以測試列已知IV(1)表示:使用所有列作爲單獨DV的擬合模型

library(nlme) 
exampledf<- data.frame(matrix(ceiling(runif(16,0,50)), ncol=4)) 
colnames(exampledf)<-c("a","b","id_num","d") 
my.control<-list(opt='optim',method='ML') 

lme(.~1,random=~1|id_num,na.action=na.fail,data=exampledf,control=my.control) #fails 

我的目標輸出(這些值不指定具體列名):

lme(a~1,random=~1|id_num,na.action=na.fail,data=exampledf,control=my.control) 
lme(b~1,random=~1|id_num,na.action=na.fail,data=exampledf,control=my.control) 
lme(d~1,random=~1|id_num,na.action=na.fail,data=exampledf,control=my.control) 
+0

的未不尋常的舉動是''跨越名稱(exampledf)lapply'','paste'他們入公式字符串,並將其強制到實際的公式,所以你最終名單楷模。一起,'lapply(name(exampledf)[ - 3],function(x){lme(as.formula(paste(x,'〜1')),random =〜1 | id_num,na.action = na。失敗,數據= exampledf,控制= my.control)})' – alistaire

回答

2
abc <- function(i){ 
    form <- as.formula(paste0(colnames(exampledf)[i], "~1")) 
    lme(form,random=~1|id_num,na.action=na.fail,data=exampledf,control=my.control) 
} 

lapply(seq_along(colnames(exampledf)), abc) 
+0

我怎樣才能傳遞一個數據框功能'abc'作用? – Rilcon42

+0

@Rilcon42的數據框是一樣的權利!所以我沒有得到你的問題 –

+0

抱歉澄清我的意思是:如果我想在函數中使用不同的數據框,我可以做一些事情:'abc(new_df,i)' – Rilcon42