如何 select 数据框列表中的一列?
How can I select a column from a list of dataframes?
我的小标题中有几个小标题作为列表列。看起来像
# A tibble: 2 x 2
kind data
<chr> <list>
1 Bernoulli <tibble [3,154 × 13]>
2 Binomial <tibble [43 × 3]>
data
列中的每个标题都有一个名为 cigs
的列。我想从每个 tibble 中提取该列,并将其作为一个新列包含在内。所需的输出是
# A tibble: 2 x 2
kind data cigs
<chr> <list> <list>
1 Bernoulli <tibble [3,154 × 13]> <tibble [3,154 x 1]>
2 Binomial <tibble [43 × 3]> <tibble [43 x 1]>
目前,我这样做是因为
library(tidyverse)
compare_me %>%
mutate(cigs = data %>% map( ~ select(.x,cigs)) )
有没有更简单的方法来使用 purrr 来做到这一点?
我不知道你想让它变得多么容易,但这里有一种方法只需要 purrr
。您可以映射 [
函数(相当于执行 df$data["cigs"]
)并将结果存储在 cigs 变量中。不需要 dplyr.
library(purrr)
a = tibble::tibble(r = letters, cigs = runif(26))
b = tibble::tibble(r = LETTERS, cigs = rnorm(26))
df = tibble::tibble(kind = c("bernie","binomi"),data = list(a,b))
df$cigs = map(df$data,`[`,"cigs")
#> # A tibble: 2 x 3
#> kind data cigs
#> <chr> <list> <list>
#> 1 bernie <tibble [26 x 2]> <tibble [26 x 1]>
#> 2 binomi <tibble [26 x 2]> <tibble [26 x 1]>
我的小标题中有几个小标题作为列表列。看起来像
# A tibble: 2 x 2
kind data
<chr> <list>
1 Bernoulli <tibble [3,154 × 13]>
2 Binomial <tibble [43 × 3]>
data
列中的每个标题都有一个名为 cigs
的列。我想从每个 tibble 中提取该列,并将其作为一个新列包含在内。所需的输出是
# A tibble: 2 x 2
kind data cigs
<chr> <list> <list>
1 Bernoulli <tibble [3,154 × 13]> <tibble [3,154 x 1]>
2 Binomial <tibble [43 × 3]> <tibble [43 x 1]>
目前,我这样做是因为
library(tidyverse)
compare_me %>%
mutate(cigs = data %>% map( ~ select(.x,cigs)) )
有没有更简单的方法来使用 purrr 来做到这一点?
我不知道你想让它变得多么容易,但这里有一种方法只需要 purrr
。您可以映射 [
函数(相当于执行 df$data["cigs"]
)并将结果存储在 cigs 变量中。不需要 dplyr.
library(purrr)
a = tibble::tibble(r = letters, cigs = runif(26))
b = tibble::tibble(r = LETTERS, cigs = rnorm(26))
df = tibble::tibble(kind = c("bernie","binomi"),data = list(a,b))
df$cigs = map(df$data,`[`,"cigs")
#> # A tibble: 2 x 3
#> kind data cigs
#> <chr> <list> <list>
#> 1 bernie <tibble [26 x 2]> <tibble [26 x 1]>
#> 2 binomi <tibble [26 x 2]> <tibble [26 x 1]>