【发布时间】:2020-02-11 20:11:54
【问题描述】:
我已阅读 this question,但在我的情况下我无法理解它,我的 tibble 中有 ggplots。
说我有:
library(tidyverse)
f <- function(n) {
p <- tibble(x = rnorm(30, n)) %>%
ggplot(aes(x = x)) + geom_density()
return(list(n = n, p = p))
}
m <- map(seq(10), f)
我想将m 变成tibble,有十行两列,分别命名为n 和p。
如果可能的话,我还希望我的代码可以处理任意数量的列、任何类型的列。
as_tibble(transpose(m))
给我
# A tibble: 10 x 2
n p
<list> <list>
1 <int [1]> <gg>
2 <int [1]> <gg>
3 <int [1]> <gg>
...
即每个单元格都是一个列表,只有一个元素。 我想将每个列表转换为标量。
我尝试过的:
-
n列我使用了map_int,但是p列怎么办? -
unnest也适用于列n,但不适用于p。 - 与
p列上的unlist相同(即使是recursive = FALSE)。
【问题讨论】:
-
保持函数原样
tibble(n = seq_len(n), p = map(n, f))也可以,n = 10? -
@RonakShah:好吧,我想将
f的输出用作n。我承认这个例子可能过于简单了。