【问题标题】:How to get a list (or vector) of tibbles如何获取小标题列表(或向量)
【发布时间】:2021-08-26 21:41:08
【问题描述】:

在 Python 中,我可以这样做:

import pandas as pd

s1 = pd.Series([1,2,3])
s2 = pd.Series([4,5,6])
combo = [s1, s2]

我想在 R 中做类似的事情。我试过这个:

library(dplyr)

tbl1 <- tibble(1:3)
tbl2 <- tibble(4:6)
combo <- c(tbl1, tbl2)

但这会破坏 dplyr 数据结构,只会创建一个列表列表。

如何获得小标题列表(或向量)?

【问题讨论】:

  • 将其更改为 list 而不是 c list(tbl1, tbl2)
  • 你想要小标题列表还是只有一个小标题? tbl1 &lt;- c(1:3);tbl2 &lt;- c(4:6)combo &lt;- tibble(tbl1, tbl2) `

标签: python r dplyr


【解决方案1】:

data.frame/tibble/data.table 都是 list 加上 class 属性。当我们执行concatenation 时,它会删除那些class 属性并导致vector 的简单list 即列。如果我们想保留class,用list包装

combo <- list(tbl1, tbl2)

或命名为list

combo <- dplyr::lst(tbl1, tbl2)

【讨论】:

    【解决方案2】:

    正如@akrun 所说,您正在寻找列表对象,而不是原子向量(通过c() 构造)。您可以进一步命名列表对象、访问它们并将它们合并:

    # create datalist
    datalist <- list(
       "tbl1" = tibble::tibble(a = 1:3, b = letters[1:3]),
       "tbl2" = tibble::tibble(a = 4:6, b = letters[4:6])
     )
    
    # access tbl from list
    datalist[["tbl1"]]
    
    # merge into single data.frame/tibble
    combined <- dplyr::bind_rows(datalist, .id = "table_name")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 2019-06-03
      相关资源
      最近更新 更多