【问题标题】:rename first column in R重命名 R 中的第一列
【发布时间】:2023-01-13 02:08:32
【问题描述】:

我有这个 df,我想用 A、B、C 重命名第一列:

 DF <-
   seqnames    start      end width strand peak feature start_position end_position feature_strand insideFeature
A      chr1  3191703  3192103   401      *    1  X48094        3172239      3172348              +    downstream
B      chr1  3482756  3483156   401      *    2  X48098        3445779      3448011              -      upstream
C      chr1  3549453  3549853   401      *    3  X48099        3535200      3537508              -      upstream

因为当我将其另存为 xls 文件时,列名称会滑动并且不再匹配。 输出示例是:

    DF <-

COLNAMES   seqnames    start      end width strand peak feature start_position end_position feature_strand insideFeature
        A      chr1  3191703  3192103   401      *    1  X48094        3172239      3172348              +    downstream
        B      chr1  3482756  3483156   401      *    2  X48098        3445779      3448011              -      upstream
        C      chr1  3549453  3549853   401      *    3  X48099        3535200      3537508              -      upstream

【问题讨论】:

  • 请使用dput(DF)显示您的DF
  • DF[,1] &lt;- c('A', 'B', 'C')
  • 所以你想把你的行名放到一个新列中并命名?我猜“A”、“B”、“C”是您的DF 的行名?如果是这样,你可以试试tibble::rownames_to_column()
  • 谢谢,这就是解决方案!

标签: r dataframe


【解决方案1】:

您可以使用 tibble 包中的 rownames_to_column 函数。您可以使用以下代码:

DF <- data.frame(row.names = LETTERS[1:2],
                 seqnames = c("chr1", "chr1"),
                 start = c(1, 3))

library(tibble)
DF %>%
  rownames_to_column(var="name")

输出:

  name seqnames start
1    A     chr1     1
2    B     chr1     3

【讨论】:

  • 抱歉,我修改了帖子以便更清楚:我想用 b c 为列命名(即没有名称)
  • @jerrytom,我将我的代码更改为您的问题。
【解决方案2】:

假设您的列 A, B, C 代表 row.names 您可以在 base R 中执行此操作:

DF <- data.frame(COLNAMES = LETTERS[1:3],
                 a = 1:3,
                 b = letters[1:3])

DF$row_nms <- COLNAMES(DF)

DF <- DF[, c("row_nms", "a", "b")]

DF
#>   COLNAMES a b
#> A       A 1 a
#> B       B 2 b
#> C       C 3 c

Or using {tibble}

图书馆(小标题)

rownames_to_column(DF, var = "COLNAMES")
#>   COLNAMES row_nms a b
#> 1     A       A 1 a
#> 2     B       B 2 b
#> 3     C       C 3 c

reprex package (v2.0.1) 创建于 2022-04-18

【讨论】:

    【解决方案3】:

    cbinddata.frame 中,可用于添加显示 rownames 的列。

    cbind(COLNAMES = rownames(x), x)
    #data.frame(COLNAMES = rownames(x), x) #Alternative
    #  COLNAMES seqnames start
    #A        A     chr1     1
    #B        B     chr1     3
    

    数据:

    x <- data.frame(row.names = LETTERS[1:2],
                    seqnames = c("chr1", "chr1"),
                    start = c(1, 3))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 2022-08-08
      相关资源
      最近更新 更多