设置“row.names”时值不唯一-是否忽略?

设置“row.names”时值不唯一-是否忽略?,r,R,有没有办法忽视这一点?我可以为不同的行输入相同的行名。如果不可能,是否有办法在重复的行中添加.2?通常,如果需要,您可以将行名设置为重复的,请参阅例如 m <- matrix(1:9,3,3) rownames(m) <- c(1,1,1) m [,1] [,2] [,3] #1 1 4 7 #1 2 5 8 #1 3 6 9 我不知道为什么data.frames不允许这样做,例如 d <- data.frame(x=

有没有办法忽视这一点?我可以为不同的行输入相同的行名。如果不可能,是否有办法在重复的行中添加.2?

通常,如果需要,您可以将行名设置为重复的,请参阅例如

m <- matrix(1:9,3,3)
rownames(m) <- c(1,1,1)
m
  [,1] [,2] [,3]
#1    1    4    7
#1    2    5    8
#1    3    6    9
我不知道为什么data.frames不允许这样做,例如

d <- data.frame(x=1:10,y=letters[1:10])
rownames(d) <- rep(letters[1:5],2)
#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': ‘a’, ‘b’, ‘c’, ‘d’, ‘e’ 

举一个您正在考虑的对象类型的例子,可能会得到更具体的答案。

您可以修改名称,使其唯一。以下是一个例子:

x <- c(rep(1,5), 2, 3, 4, rep(5, 2), 1)
x
## [1] 1 1 1 1 1 2 3 4 5 5 1
将其粘贴到x中的值,您就有了唯一的值:

paste(x, ave(x, x, FUN=function(i) seq(length(i))), sep='.')
##  [1] "1.1" "1.2" "1.3" "1.4" "1.5" "2.1" "3.1" "4.1" "5.1" "5.2" "1.6"

为什么需要设置行名称?只是为了在热图上有一个专有名称。提供一个可复制的示例,我相信我们可以帮助您。为什么需要一个可复制的示例?只是为了不投我一票?只需回答一个简单的问题。。。这真的很难吗?用一个可复制的例子更容易。这只是出于礼貌,使它更容易帮助你。
paste(x, ave(x, x, FUN=function(i) seq(length(i))), sep='.')
##  [1] "1.1" "1.2" "1.3" "1.4" "1.5" "2.1" "3.1" "4.1" "5.1" "5.2" "1.6"