用于反转列表嵌套顺序的 R 单线?

qdr*_*ead 0 r

是否有一个简洁的 R“单行”或现有函数来反转列表的嵌套顺序?这意味着list[[i]][[j]]输入中的元素将映射到list[[j]][[i]]输出中。

例如,

my_input <- list(list(1,2,3), list('a','b','c'), list('foo','bar','baz'))

desired_output <- list(list(1,'a','foo'), list(2,'b','bar'), list(3,'c','baz'))
Run Code Online (Sandbox Code Playgroud)

G. *_*eck 6

1) transpose在 purrr 包中这样做:

library(purrr)
transpose(my_input)
Run Code Online (Sandbox Code Playgroud)

2)这也有效并且不使用任何包:

n <- length(my_input[[1]])
split(simplify2array(my_input), 1:n)
Run Code Online (Sandbox Code Playgroud)

2a)也可以写成:

s <- simplify2array(my_input)
split(s, 1:nrow(s))
Run Code Online (Sandbox Code Playgroud)

3)这是另一种方法:

split(do.call("c", my_input), sequence(lengths(my_input)))
Run Code Online (Sandbox Code Playgroud)

4)这是一种不使用的方法split

as.list(as.data.frame(t(simplify2array(my_input))))
Run Code Online (Sandbox Code Playgroud)