我正在pSI包中运行candidate.overlap函数,并收到有关行名的错误消息:
> candidate.overlap(pSIs = psI_output, candidate.genes = dat2.1)
Error in `row.names<-.data.frame`(`*tmp*`, value = value) :
duplicate 'row.names' are not allowed
In addition: Warning message:
non-unique values when setting 'row.names': ‘C21ORF59’, ‘C6ORF165’
使用相同的candidate.genes列表运行的示例过滤器不会抛出错误消息,因此我知道函数和dat2.1不是错误。
> candidate.overlap(pSIs = sample.data$pSI.output, candidate.genes = dat2.1)
$pSi_0.0001
[1] Amygdala.Young.Adulthood_0.0001 Cerebellum.Young.Adulthood_0.0001
[3] Cortex.Young.Adulthood_0.0001 Hippocampus.Young.Adulthood_0.0001
[5] Striatum.Young.Adulthood_0.0001 Thalamus.Young.Adulthood_0.0001
<0 rows> (or 0-length row.names)
通过阅读答案,我使用了唯一= TRUE的make.names函数,因为我以前遇到过行名称的问题,但我认为在此步骤之前我已经解决了它。我检查了重复的rownames:
> anyDuplicated(rownames(psI_output))
[1] 0
> anyDuplicated(rownames(sample.data$pSI.output))
[1] 0
并检查str :(数据框中有值,它们不是全部NA)
> str(psI_output)
'data.frame': 55993 obs. of 12 variables:
$ Adipose...Subcutaneous : num NA NA NA NA NA NA NA NA NA NA ...
$ Artery...Tibial : num NA NA NA NA NA NA NA NA NA NA ...
$ Artery...Aorta : num NA NA NA NA NA NA NA NA NA NA ...
$ Artery...Coronary : num NA NA NA NA NA NA NA NA NA NA ...
$ Colon...Transverse : num NA NA NA NA NA NA NA NA NA NA ...
$ Lung : num NA NA NA NA NA ...
$ Stomach : num NA NA NA NA NA NA NA NA NA NA ...
$ Skin...Sun.Exposed..Lower.leg. : num NA NA NA NA NA NA NA NA NA NA ...
$ Skin...Not.Sun.Exposed..Suprapubic.: num NA NA NA NA NA NA NA NA NA NA ...
$ Nerve...Tibial : num NA NA NA NA NA NA NA NA NA NA ...
$ Muscle...Skeletal : num NA NA NA NA NA NA NA NA NA NA ...
$ Whole.Blood : num NA NA NA NA NA ...
R是否有标题问题,例如皮肤重复两次,然后是......?或者有没有办法检测错误发生的位置? 任何帮助赞赏。 三英
答案 0 :(得分:0)
感谢TSEA / pSI团队的Alan Wells:
因此,我们在pSI.list和candidate.overlap函数中执行的第一步是将所有基因/转录本名称转换为大写字母。这是因为当我们尝试将这些基因名称与用户提供的列表匹配时,由于基因名称中使用的字母大小写,我们不希望遇到不匹配的问题。将所有基因名称转换为大写后,您的数据集中有两个基因名称,即C6ORF165和C21ORF59。
有趣的是,make.names函数设置为unique = TRUE将字母的大小写合并调用行名称唯一。了解了一些事情。