在R数据框中,行名称必须是唯一的.
df <- mtcars
rownames(df) <- rep("duplicate!", nrow(df))
> Error in `row.names<-.data.frame`(`*tmp*`, value = value) :
> duplicate 'row.names' are not allowed
> In addition: Warning message:
> non-unique value when setting 'row.names': ‘duplicate!’
要么
df <- data.frame(mtcars, row.names=rep("duplicate!", nrow(mtcars)))
> Error in data.frame(mtcars, row.names = rep("duplicate!", nrow(mtcars))) :
duplicate row.names: duplicate!
那么,as.data.frame()的下列行为的动机是什么?这是故意还是错误?
m <- as.matrix(mtcars)
rownames(m) <- rep("duplicate!", nrow(m))
df <- as.data.frame(m)
导致以下结果:
any(duplicated(rownames(df))) # == TRUE
nrow(df) # == 32
length(unique(rownames(df))) # == 1
df["duplicate!", ] # returns a single row...
> mpg cyl disp hp drat wt qsec vs am gear carb
> duplicate! 21 6 160 110 3.9 2.62 16.46 0 1 4 4
(使用R版本3.4.3(2017-11-30)运行)
最佳答案 是的,正如Martyn Plummer在R-devel官方邮件列表上所证实的那样
(
https://stat.ethz.ch/mailman/listinfo/r-devel/)在他的
reply中,这是一个错误,我可能很快就会对修复该错误的来源做出改变.