我正在使用MCMCglmm包用于广义线性模型。以下是我的代码,Final_KIRC_met_act包括途径分数。
> 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
任何人都可以帮助我吗?
答案 0 :(得分:1)
使用 MCMCglmm 时,必须先附加数据集,然后构建模型。
例如: 当我不使用 attach 命令时,我得到:
<块引用>bayes_reg <- MCMCglmm(train$SalePrice ~-train$PoolQC,data=train)
[<-.data.frame
(*tmp*
, , response.names, value =
c(12.247694320221, : 下标中不允许缺失值
数据框的赋值
然后,我使用附件:
<块引用>附加(火车) bayes_reg <- MCMCglmm(SalePrice ~-PoolQC ,data=train)
代码运行成功。
答案 1 :(得分:0)
正如@Roland在他的评论中指出的那样,“使用cbind
”将多个回复作为矩阵传递,因为R's non-standard evaluation这与提供仅仅是these不同响应矩阵作为变量。但是,您可以自己使用此语言功能来构建适当的调用:
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
参数提供向量。但对他们来说,会有更多信息性的错误信息。最小的工作示例也允许解决这些问题。