2017-08-21 26 views
1

我正在使用MCMCglmm包進行廣義線性模型。這裏是我的代碼,Final_KIRC_met_act包括途徑分數。不允許在MCMCglmm包中的數據幀的下標指定中丟失值

> g<-factor(g, levels=c("MALE","FEMALE"), labels=c(0,1)) 

> data<-cbind(Final_KIRC_met_act, g) 

> data2<-as.data.frame(data) 

> head(data2) 

      M00001_C00022 M00002_C00022 M00003_C05345 M00004_R02739 M00006_C00199 M00007_C00117 M00009_R00342,R00361 
TCGA-6D-AA2E 0.0001438301 0.004029765 0.0002290721 0.0004104972 0.02246794  0.1467008   1.703306e-04 
TCGA-A3-3306 0.0001619469 0.003969637 0.0001457640 0.0003494476 0.02197964  0.1260309   9.222817e-05 
TCGA-A3-3307 0.0001403204 0.003569992 0.0002373946 0.0003091625 0.02021713  0.1249811   8.646219e-05 
TCGA-A3-3308 0.0001105221 0.002883832 0.0001282293 0.0003436197 0.02256994  0.1214749   9.128686e-05 
TCGA-A3-3311 0.0001468475 0.003847826 0.0001714674 0.0003078584 0.02247165  0.1173292   9.803733e-05 
TCGA-A3-3313 0.0001223408 0.003363544 0.0002314604 0.0002821620 0.01696295  0.1273991   1.616942e-04 
... 

當我申請MCMCglmm我會得到下面的錯誤:

> model<-MCMCglmm(Final_KIRC_met_act~g,data=data2) 

Error in `[<-.data.frame`(`*tmp*`, , response.names, value = c(0.000143830145988399, : 
    missing values are not allowed in subscripted assignments of data frames 

但是,當我控制我的數據有沒有遺漏值

> table(is.na(Final_KIRC_met_act)) 

FALSE 
50496 

> table(is.na(g)) 

FALSE 
    526 

table(is.na(data2)) 

FALSE 
51022 

誰能幫助我?

+1

從文檔:「多個響應作爲使用'cbind'的矩陣傳遞」。我的配方中沒有看到「cbind」。 – Roland

+0

謝謝羅蘭。我已經嘗試使用cbind從Final_KIRC_met行爲的一些變量,但不幸的是,我得到了同樣的錯誤 – Elen

+1

沒有一個最小的可重複的例子,我們不能幫你。請參閱https://stackoverflow.com/a/5963610/1412059。 – Roland

回答

0

由於@Roland在他的評論中指出,「多響應爲使用cbind矩陣過去了」,由於R's non-standard evaluation這是不一樣的變量只是提供響應矩陣。但是,你可以使用這個語言功能自己構建一個適當的呼叫:

responses = parse(text=paste0("cbind(",paste(colnames(Final_KIRC_met_act), collapse = ","),")"))[[1]] 

model <- eval(substitute(
    MCMCglmm(responses ~ g, data = data2), 
    list(responses=responses) 
)) 

可能會有更多的問題與您的電話,例如我想你也需要爲family參數提供向量。但對他們來說,會有更多的信息錯誤信息。一個最小的工作示例也可以解決這些問題。