从Tibble列创建列表

时间:2017-10-02 13:14:04

标签: r list dplyr purrr readr

我有一个像这样的东西:

> library(tidyverse)
> tbl <- tibble(x = c('a', 'b', 'c'), y = 1:3)
> tbl
# A tibble: 3 x 2
      x     y
  <chr> <int>
1     a     1
2     b     2
3     c     3

我想创建一个列表,其中列表元素的名称是来自x的列表(我有所有不同的条目),值是来自y的值。 我想要这个清单:

list(a = 1, b = 2, c = 3)
$a
[1] 1

$b
[1] 2

$c
[1] 3

提前谢谢

2 个答案:

答案 0 :(得分:3)

您可以将列 y 转换为列表,将setNames转换为列 x

setNames(as.list(tbl$y), tbl$x)

#$a
#[1] 1

#$b
#[1] 2

#$c
#[1] 3

答案 1 :(得分:2)

使用tidyr

library(tidyr)
tbl <- tibble(x = c('a', 'b', 'c'), y = 1:3)
as.list(spread(tbl, x, y))

spread获取长格式数据并使其变宽,然后将其转换为列表可获得所需的输出。

# $a
# [1] 1
# 
# $b
# [1] 2
# 
# $c
# [1] 3