1

我正在尝试在具有 2 个批次的数据集上运行 ComBat 脚本,但是我遇到了错误,并且我不知道如何检查代码,因为我是 R 新手。

我以这种方式运行 ComBat 方法:

# Load sva
library(sva)
# Read expression values
dat = read.table('dataset.xls', header=TRUE, sep='\t')
# Read sample information file about batches
sif = read.delim('sif.tsv', header=TRUE, sep='\t')
# Call ComBat
ComBat(dat=dat,batch=sif$Batch, mod=NULL)

无论如何,我的输出是:

Found 2 batches
Found 0  categorical covariate(s)
Found 54675 Missing Data Values
Standardizing Data across genes
Error in solve(t(des) %*% des) %*% t(des) %*% y1 : 
  requires numeric/complex matrix/vector arguments

dat 的数据格式为:

probe set    <sample1>   ...    <sampleN>
<gene_name>  <value1>    ...    <valueN>
...

sif 的数据格式为:

Array name   Sample name   Batch
<Array1>     <Sample1>     <Batch1>
...

任何提示表示赞赏。如果需要,我会提供更多信息。

谢谢

4

2 回答 2

1

看起来当您阅读信息时,它并没有以您期望的格式存储它。

从错误中,ComBat期望一个matrix带有numericcomplex值。read.table凭记忆会给你一个data.frame

所以尝试运行:

dat <- as.matrix(dat)
ComBat(dat=dat,batch=sif$Batch, mod=NULL)
于 2013-06-25T04:48:05.850 回答
0

我已经想出了如何做到这一点,并补充说:

# Remove NA from end of lines
l_dat = length(dat)
dat[l_dat] <- NULL
# Remove probe set from beginning of lines
dat[1] <- NULL

就在 ComBat 通话之前。这是因为最后一列包含NA值(下一个警告消失:

Found 54675 Missing Data Values

),第一列包含引发下一个错误的探测集(非数值):

Error in solve(t(des) %*% des) %*% t(des) %*% y1 : 
  requires numeric/complex matrix/vector arguments
于 2013-06-11T11:57:16.210 回答