R中重复的rownames出错,但anyduplicated(rownames())什么都没有返回?

时间:2016-03-13 23:16:26

标签: r duplicates rowname

我正在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是否有标题问题,例如皮肤重复两次,然后是......?或者有没有办法检测错误发生的位置? 任何帮助赞赏。 三英

1 个答案:

答案 0 :(得分:0)

感谢TSEA / pSI团队的Alan Wells:

  

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

有趣的是,make.names函数设置为unique = TRUE将字母的大小写合并调用行名称唯一。了解了一些事情。