如何解决在 SummarizedExperiment 对象中设置子集时出错
我正在执行交叉验证,它因错误而停止,并将我带到作为 SummarizedExperiment
对象准备的输入文件(表达式矩阵)之一。转换为 SummarizedExperiment 对象之前的数据框如下所示:
>df_in
ID ENSG00000173876 ENSG00000015171 ENSG00000151240 ENSG00000201861
GTEX-1122O 1.23971133 0.032313662 0.463225608 -0.0999796730
GTEX-11EM3 0.92072379 0.063184620 0.174434651 -0.2178387562
GTEX-11EMC 0.47459394 0.096004857 0.731217143 0.0007358261
GTEX-11EQ9 -0.09716869 0.037165594 -0.206617086 0.3257665747
GTEX-11I78 0.37728673 -0.047541452 -0.339854752 -0.3821697072
GTEX-11TT1 -0.30940478 0.007378638 -0.037616431 -0.4177196282
GTEX-11VI4 0.19268243 -0.042931274 -0.001725555 -0.0399472751
GTEX-11ZTT -0.85763663 -0.021054257 0.361930396 0.0442186943
GTEX-1211K -1.04593727 0.007981690 -0.235834842 -0.0596221511
GTEX-1212Z -0.44167417 0.010131560 0.445164764 0.1048388337
然后在转换为 SummarizedExperiment 对象后,第一列基本上被索引为 character 在 df_in@colData@rownames。
错误信息是:
Error in .SummarizedExperiment.charbound(j,colnames(x),fmt) :
<SummarizedExperiment>[,j] index out of bounds: GTEX-ZT9X
当它计算 R 平方时,它显示出来并结束一倍。
这也是警告:
In data.frame(...,check.names = FALSE) :
row names were found from a short variable and have been discarded
- 所有输入矩阵中的个体列表都相同。
- 没有空格前导或尾随第一列的字符。
查看Summerized Experiment Class文档,似乎这发生在子集操作:
#' @export
setMethod("[","ExampleClass",function(x,i,j,drop=TRUE) {
rv <- rowVec(x,withDimnames=FALSE)
cv <- colVec(x,withDimnames=FALSE)
rrm <- rowToRowMat(x,withDimnames=FALSE)
ccm <- colToColMat(x,withDimnames=FALSE)
rcm <- rowToColMat(x,withDimnames=FALSE)
crm <- colToRowMat(x,withDimnames=FALSE)
.
.
.
if (!missing(j)) {
if (is.character(j)) {
fmt <- paste0("<",class(x),">[,j] index out of bounds: %s")
j <- SummarizedExperiment:::.SummarizedExperiment.charbound(
j,fmt
)
}
j <- as.vector(j)
cv <- cv[j]
ccm <- ccm[,drop=FALSE]
rcm <- rcm[j,drop=FALSE]
}
out <- callNextMethod()
Biocgenerics:::replaceSlots(out,rowVec=rv,colVec=cv,rowToRowMat=rrm,colToColMat=ccm,rowToColMat=rcm,colToRowMat=crm,check=FALSE)
})
我错过了什么。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。