2017-09-11 33 views
1

我试图通过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

+0

我无法重现此错误。 – CCD

+0

无论如何,你可以尝试'df%>%set_rownames(.x1)%>%select(-x1)'使用magrittr包 – agenis

回答

0

要完成第一个答案,我也建议:

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的帮助。

相关问题