在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数据结构,只是创建了一个列表的列表。如何获得tibles的列表(或向量)?
xwbd5t1u1#
一个data.frame/tibble/data.table都是list,并添加了class属性。当我们进行c oncatenation时,它删除了那些class属性,并导致vector的简单list,即列。如果我们想保留class,请使用list Package
data.frame/tibble/data.table
list
class
c
vector
combo <- list(tbl1, tbl2)
或命名为list
combo <- dplyr::lst(tbl1, tbl2)
ssm49v7z2#
正如@akrun所说,您正在寻找列表对象,而不是原子向量(通过c()构造)。您可以进一步命名列表对象,访问它们并合并它们,如下所示:
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")
2条答案
按热度按时间xwbd5t1u1#
一个
data.frame/tibble/data.table
都是list
,并添加了class
属性。当我们进行c
oncatenation时,它删除了那些class
属性,并导致vector
的简单list
,即列。如果我们想保留class
,请使用list
Package或命名为
list
ssm49v7z2#
正如@akrun所说,您正在寻找列表对象,而不是原子向量(通过
c()
构造)。您可以进一步命名列表对象,访问它们并合并它们,如下所示: