从 Tibble Columns 创建一个列表

Tom*_*ini 1 r list dplyr readr purrr

我有一个这样的tibble:

> 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
Run Code Online (Sandbox Code Playgroud)

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

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

$b
[1] 2

$c
[1] 3
Run Code Online (Sandbox Code Playgroud)

先感谢您

Psi*_*dom 5

您可以将y列转换为列表,并setNames使用x列:

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

#$a
#[1] 1

#$b
#[1] 2

#$c
#[1] 3
Run Code Online (Sandbox Code Playgroud)


Eum*_*ies 5

使用 tidyr

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

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

# $a
# [1] 1
# 
# $b
# [1] 2
# 
# $c
# [1] 3
Run Code Online (Sandbox Code Playgroud)

  • @TommasoGuerrini 值得注意的是,如果您的 `x` 不是唯一的,我的解决方案会抛出错误,而 Psidom 的答案将很高兴有多个同名的列表元素。由于您没有指定,因此两者都不是对还是错,但是,也许可以考虑哪种适合您的情况。当然,如果您确定没有重复也没关系。 (2认同)