创建小标题和随机化

时间:2019-04-02 13:57:30

标签: r dplyr

我想创建一个ID(iter)和随机生成的数据的小工具。

   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)

1 个答案:

答案 0 :(得分:2)

在第二个不起作用的示例中调用lapply()时,只需引用iter的名称即可,而不必尝试重新构建向量。

tibble(iter = 1:iter,
       data = lapply(iter, gen_data)) %>% unnest(data)

这是因为tibble()正在其上下文中按名称查找变量,并且iter在此已经以c(1,2)的形式存在。警告来自于您向抱怨的:传递了两个元素,然后使用第一个元素继续前进。