0

我正在 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)

通读答案,我使用了带有 unique = TRUE 的 make.names 函数,因为我之前遇到了行名问题,但认为我在这一步之前已经解决了它。我检查了重复的行名:

> 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的标题是否有问题,例如皮肤重复两次,然后是...?或者有没有办法检测错误发生在哪里?任何帮助表示赞赏。科学

4

1 回答 1

0

感谢 TSEA/pSI 团队的 Alan Wells:

因此,我们在 pSI.list 和 Candidate.overlap 函数中执行的第一步是将所有基因/转录本名称转换为大写字母。这是因为当我们尝试将这些基因名称与用户提供的列表进行匹配时,我们不想遇到由于基因名称中使用的字母大小写而导致不匹配的问题。将所有基因名称转换为大写后,您的数据集中似乎有两个基因名称重复,C6ORF165 和 C21ORF59。

有趣的是,设置为 unique = TRUE 的 make.names 函数将字母的大小写合并到调用行名的唯一性中。学到了一些东西。

于 2016-03-29T18:44:44.417 回答