将第一列添加为r中的行名称时出错

时间:2017-09-11 22:20:19

标签: r row rename

我试图通过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 个答案:

答案 0 :(得分:1)

要完成第一个答案,我还可以建议:

library(magrittr)
df %>% data.frame %>% set_rownames(.$x1) %>% select(-x1)

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

最后,要了解为什么初始data.frame在设置row.names时出错,因为它是子集化的。你会发现这不是一个真正的载体:

    dim(df[, 1]) 
#### [1] 2 1

这是由于您的初始data.frame的tibble格式的特殊性。 感谢@thelatemail的帮助。