【问题标题】:Adding a row to a data frame when the row contains more elements than there are columns in the data frame当行包含的元素多于数据框中的列时,将行添加到数据框中
【发布时间】:2021-09-20 11:51:01
【问题描述】:

我想在数据框中添加一个新行;但是,就我而言,这一行具有更多价值。假设我有以下数据集:

> df <- data.frame(0,0,0)
> colnames(df) <- c("A","B","C")
> df
A B C
0 0 0

现在让我们有一个包含 4 个元素的向量。

> x <- c(0,0,0,0)
> names(x) <- c("A","B","D","C")
> x
A B D C 
0 0 0 0 

我想将此向量添加到上面的数据框中,这样

> df
A B C D
0 0 0 NA 
0 0 0 0 

有没有办法做到这一点?

【问题讨论】:

    标签: r tidyverse data-manipulation


    【解决方案1】:

    你可以使用 -

    library(dplyr)
    
    df %>% bind_rows(x %>%
      t %>%
      as.data.frame())
    
    #  A B C  D
    #1 0 0 0 NA
    #2 0 0 0  0
    

    或者正如@Andrew Gustar 提到的那样 -

    dplyr::bind_rows(df, x)
    

    【讨论】:

    • 其实可以dplyr::bind_rows(df, x)
    • 是的..谢谢。我忘了我们可以将命名向量绑定到数据框。更新了答案。
    【解决方案2】:

    使用rbindlist

    library(data.table)
    rbindlist(list(df, as.data.frame.list(x)), fill = TRUE)
       A B C  D
    1: 0 0 0 NA
    2: 0 0 0  0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-22
      • 1970-01-01
      • 2023-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-16
      相关资源
      最近更新 更多