微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不允许重复的“row.names” - R

如何解决不允许重复的“row.names” - R

所以,我是 R 新手,正在尝试实施差异基因表达分析。 我正在尝试将基因名称存储为行名称,以便我可以创建一个 DGEList 对象。

asthma <- read.csv("Asthma_3 groups-Our study gene expression.csv")
head(asthma,10)
dim(asthma)

asthma <- na.omit(asthma)
distinct(asthma)

countdata <- asthma[,-1]

head(countdata)
rownames(countdata) <- asthma[,1]
'''
I am getting this error:

Error in `.rowNamesDF<-`(x,value = value) : duplicate 'row.names' are not allowed

解决方法

asthma 中的第一列可能有重复值。我能想到的两个选项

  1. 第一列是否可以与另一列组合以生成具有可用作行名的唯一值的新列?
  2. 如果没有,您可能可以使用 make.names()

这是一个可重现的例子。

df = data.frame(col1 = c('A','A','B'),col2 = c(1,2,3))
df

定义了一个像这样的 data.frame

  col1 col2
1    A    1
2    A    2
3    B    3

默认情况下,data.frame 的行名是 1、2、3。如果你试试这个

rownames(df) = df[,1] 

你得到一个错误,因为 df[,1] 有两次 'A',所以它不能不加修改地用作行名。您使用 make.names 来创建具有唯一值的行名

unique.col1 = make.names(df[,1],unique=T)
unique.col1 

结果是

"A"   "A.1" "B"  

请注意,.1 已添加到第二个 A 以使其与第一个 A 不同。然后将行名定义为 unique.col1:

rownames(df) = unique.col1
df

data.frame df 现在看起来像这样

    col1 col2
A      A    1
A.1    A    2
B      B    3

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。