将列表变量绑定到新数据框中
Binding a list variable into a new data frame
我正在使用 dplyr
版本 0.4.1,并且正在尝试围绕列表变量进行思考。
我无法从包含列表变量的 table 创建新数据框(或 tbl_df
或 data_frame
或其他)。
例如,如果我有一个像这样的 tbl_df
:
x <- c(1,2,3)
y <- c(3,2,1)
d <- data_frame(X = list(x, y))
d
## Source: local data frame [2 x 1]
##
## X
## 1 <dbl[3]>
## 2 <dbl[3]>
假设列表变量 X
的所有值都是相同的长度或维度,是否有一个操作可以 运行 创建一个看起来像 [=19] 的 table =] 来自 table?
中的列表变量
我希望得到看起来像这样的东西:
data_frame(V1 = c(1, 3), V2 = c(2, 2), V3 = c(3, 1))
## Source: local data frame [2 x 3]
##
## V1 V2 V3
## 1 1 2 3
## 2 3 2 1
最接近我想要的结果的是堆积柱:
d %>% tidyr::unnest(X)
我认为也许使用 rowwise
按行分组可能允许我对每一行进行操作,但我看到的结果与上面相同。
d %>% rowwise %>% tidyr::unnest(X) # %>% some extra commands here??
您可以先在 d
上做一些工作,然后再使用 bind_rows()
library(dplyr)
d$X %>%
lapply(function(x) data.frame(matrix(x, 1))) %>%
bind_rows
# Source: local data frame [2 x 3]
#
# X1 X2 X3
# 1 1 2 3
# 2 3 2 1
另一种方法是在rbindlist()
之后使用tbl_dt
,也可以输入dplyr
函数
library(data.table)
tbl_dt(rbindlist(lapply(d$X, as.list)))
# Source: local data table [2 x 3]
#
# V1 V2 V3
# 1 1 2 3
# 2 3 2 1
我正在使用 dplyr
版本 0.4.1,并且正在尝试围绕列表变量进行思考。
我无法从包含列表变量的 table 创建新数据框(或 tbl_df
或 data_frame
或其他)。
例如,如果我有一个像这样的 tbl_df
:
x <- c(1,2,3)
y <- c(3,2,1)
d <- data_frame(X = list(x, y))
d
## Source: local data frame [2 x 1]
##
## X
## 1 <dbl[3]>
## 2 <dbl[3]>
假设列表变量 X
的所有值都是相同的长度或维度,是否有一个操作可以 运行 创建一个看起来像 [=19] 的 table =] 来自 table?
我希望得到看起来像这样的东西:
data_frame(V1 = c(1, 3), V2 = c(2, 2), V3 = c(3, 1))
## Source: local data frame [2 x 3]
##
## V1 V2 V3
## 1 1 2 3
## 2 3 2 1
最接近我想要的结果的是堆积柱:
d %>% tidyr::unnest(X)
我认为也许使用 rowwise
按行分组可能允许我对每一行进行操作,但我看到的结果与上面相同。
d %>% rowwise %>% tidyr::unnest(X) # %>% some extra commands here??
您可以先在 d
上做一些工作,然后再使用 bind_rows()
library(dplyr)
d$X %>%
lapply(function(x) data.frame(matrix(x, 1))) %>%
bind_rows
# Source: local data frame [2 x 3]
#
# X1 X2 X3
# 1 1 2 3
# 2 3 2 1
另一种方法是在rbindlist()
之后使用tbl_dt
,也可以输入dplyr
函数
library(data.table)
tbl_dt(rbindlist(lapply(d$X, as.list)))
# Source: local data table [2 x 3]
#
# V1 V2 V3
# 1 1 2 3
# 2 3 2 1