在R语言中将第一列添加为行名称出现错误

4

我将尝试在R中通过第一列来命名我的行名称。但是出现错误invalid 'row.names' length

df

   x1   A   B
1  a    2   1
2  b    4   2

期望的输出结果

     A    B
a    2    1
b    4    2

我的代码

df1 <- df[, -1] #remove the first column x1 and create a new df->df1
rownames(df1) <- df[, 1] #add the row names by the first column of df

错误

Error in `row.names<-.data.frame`(`*tmp*`, value = value) : invalid 'row.names' length

谢谢!


1
我无法重现这个错误。 - agenis
我无法重现这个错误。 - CCD
无论如何,您可以尝试使用magrittr包df %>%set_rownames(.$ x1)%>% select(-x1) - agenis
1
@agenis 奇怪,这在我的 R 中显示。它写道 设置 tibble 的行名称已被弃用。 此外,对你有意义吗?感谢你的回答! - Lumos
@Kay - 我能够重现你的错误。答案可以在下面找到。 - www
1个回答

2
为了补充第一个答案,我还可以建议一下:
library(magrittr)
df %>% data.frame %>% set_rownames(.$x1) %>% select(-x1)

或者

library(tibble)
data.frame(column_to_rownames(df, var = "x1"))

最终,为了理解为什么你的初始数据框在设置行名称时出错,这是由于子集而导致的。你会发现这实际上不是一个向量:
    dim(df[, 1]) 
#### [1] 2 1

这是由于您初始数据框的tibble格式的特殊性所致。感谢@thelatemail的帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接