有什么办法可以忽略这一点吗?我可以为不同的行添加相同的行名称。如果不可能有任何方法只将额外的“.2”添加到重复的行中吗?
答案 0 :(得分:3)
您可以修改名称,使其唯一。这是一个例子:
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
您可以使用ave
创建消除歧义的矢量:
ave(x, x, FUN=function(i) seq(length(i)))
## [1] 1 2 3 4 5 1 1 1 1 2 6
将其粘贴到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"
答案 1 :(得分:1)
一般情况下,如果需要,可以将rownames设置为重复项,请参阅例如
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’
举例说明您正在考虑的对象类型可能会产生更具体的答案。