【问题标题】:error in adding the first column as the row name in r在 r 中添加第一列作为行名时出错
【发布时间】:2018-02-20 06:00:43
【问题描述】:

我试图用 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

谢谢!

【问题讨论】:

  • 我没有重现错误。
  • 我无法重现此错误。
  • 不管怎样,你可以试试df %&gt;% set_rownames(.$x1) %&gt;% select(-x1)使用magrittr包
  • @agenis 很奇怪,它显示在我的 R 中。它还写了Setting row names on a tibble is deprecated.,对你有意义吗?感谢您的回答!
  • @Kay - 我能够重现您的错误。答案可以在下面找到。

标签: r row rename


【解决方案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 的帮助。

【讨论】:

    猜你喜欢
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    相关资源
    最近更新 更多