【发布时间】:2019-04-02 22:11:04
【问题描述】:
我想用 ID (iter) 和随机生成的数据创建一个 tibble。
iter data
<int> <list>
1 1 <dbl [5]>
2 2 <dbl [5]>
3 3 <dbl [5]>
我尝试了两种类型的代码,其中只有一种给出了预期的结果,但我不确定为什么会这样,因为唯一的区别是在 tibble() 内部生成数据与否。
iter <- 2 ; n <- 5 ; mu <- 1
gen_data <- function(x){ # randomly draw from Exponential function
return(rexp(n, rate=1/mu))
}
# Works (different values each time)
data <- lapply(1:iter, gen_data)
tibble(iter = 1:iter,
data = data) %>% unnest(data)
# Doesn't work (+ there is a warning)
tibble(iter = 1:iter,
data = lapply(1:iter, gen_data)) %>% unnest(data)
【问题讨论】:
-
参见
?tibble:“tibble() 按顺序构建列。定义列时,您可以引用调用之前创建的列。只有长度为 1 的列被回收。”在第二个示例中,iter指的是您刚刚创建的iter列 (1:2)。