r - 使用 as.data.frame() 在 R 中复制行名称

标签 r dataframe duplicates rowname

在 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 ,这是一个错误,我可能很快就会对修复该错误的源进行更改。

关于r - 使用 as.data.frame() 在 R 中复制行名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49031523/

相关文章:

string - R:引用数据框将列名作为变量返回,而不是字符串(对于子集)

java - 除了使用 Java 在 Spark 中进行计数检查之外,还有哪些方法可以检查 DataFrame 是否为空?

python - 根据其他列的值填充 Pandas 列的简单方法

Mysql 如何插入多个表并进行重复键检查?

wpf - 如何防止 WPF 列表框控件中出现重复项?

包含 NA 的字段上的范围

r - 如何根据现有模式重命名 R 数据框的列?

python - 如何将 PySpark Dataframe 转换为 R 可以在 DataBricks 中识别的内容?

python-3.x - 根据现有列中的值创建新列

python - 如何使用 Python 测试唯一字符串和重复字符串(不同大小写)