将数据框按行转换为列表列表?

max*_*max 4 r dataframe

假设我有一个数据框:

df <- tibble(x=c(1,2,3),
             y=c(4,5,6),
             z=c(7,8,9))
Run Code Online (Sandbox Code Playgroud)
# A tibble: 3 x 3
      x     y     z
  <dbl> <dbl> <dbl>
1     1     4     7
2     2     5     8
3     3     6     9
Run Code Online (Sandbox Code Playgroud)

如何将数据框转换为列表列表,其中每个列表都对有关每一行的信息进行编码,如下所示:

list(list(x=1, y=4, z=7),
     list(x=2, y=5, z=8),
     list(x=3, y=6, z=9))
Run Code Online (Sandbox Code Playgroud)

注意:我在下面的回答中对迄今为止介绍的所有方法进行了基准测试。

akr*_*run 5

我们可以用 transpose

purrr::transpose(df)
Run Code Online (Sandbox Code Playgroud)

-输出

[[1]]
[[1]]$x
[1] 1

[[1]]$y
[1] 4

[[1]]$z
[1] 7


[[2]]
[[2]]$x
[1] 2

[[2]]$y
[1] 5

[[2]]$z
[1] 8


[[3]]
[[3]]$x
[1] 3

[[3]]$y
[1] 6

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