【问题标题】:Change row.names from num to chr将 row.names 从 num 更改为 chr
【发布时间】:2023-03-06 05:02:01
【问题描述】:

我在 R 中有一个 data.frame,row.names 是一个字符,我希望它们是数字。我试图找到与here 相同的问题,但它不起作用。

这是我的代码:

attr(DF1, "row.names") 
[1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20"

在我完成上面链接的操作之后:

DF1$id <- as.integer(row.names(DF1)) 
DF1[order(DF1$id), ]

我得到相同的结果:

attr(DF1, "row.names") 
[1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20"

我希望结果与数据框 D2 一样:

attr(DF2, "row.names") 
[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

【问题讨论】:

    标签: r dataframe row names


    【解决方案1】:

    从帮助页面?rownames 中说(强调我的)

    对于数据框,rownames 的值应该是一个字符向量,其中包含不重复和不丢失的名称(这是强制的),而 colnames 的值应该是(最好)在语法上唯一的字符向量- 有效名称。在这两种情况下,value 都会被 as.character 强制转换,设置 colnames 会将行名转换为字符。

    你可以把它们变成这样的整数。

    df <- data.frame(x = 1:3)
    rownames(df) <- as.character(5:7)
    attr(df, "row.names") 
    #> [1] "5" "6" "7"
    
    rownames(df) <- as.integer(rownames(df))
    attr(df, "row.names")
    #> [1] 5 6 7
    

    请注意,row.names 将始终返回一个字符向量。见?row.names。

    row.names(df)
    #> [1] "5" "6" "7"
    

    【讨论】:

      猜你喜欢
      • 2021-06-18
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      相关资源
      最近更新 更多