我有一个名为theta的变量列表,想要使用每个theta绘制n个随机变量。
S = 5
n = 5
test = tibble(
s = 1:S,
theta = rgamma(S, shape = 10*s, rate = 50)
) %>%
mutate(data = rexp(n, theta))
理想情况下,我希望我的结果是这样的:
S theta data
1 some value [a list with n number]
...
然后将其扩展为tibble:
S theta d1 d2 d3 .. dn
...
希望这很清楚。 感谢。
答案 0 :(得分:2)
如果我们需要list
,那么我们可以使用map
来遍历' theta'并在rexp
list
library(tidyverse)
test1 <- test %>%
pull(theta) %>%
map(~rexp(n, .)) %>%
mutate(test, data = .)
str(test1$data)
#List of 5
# $ : num [1:5] 5.88 7.94 1.64 3.3 11.25
# $ : num [1:5] 4.5942 0.5424 1.7479 0.0469 0.9573
# $ : num [1:5] 1.192 2.447 0.239 1.497 2.359
# $ : num [1:5] 1.2323 0.0996 1.5778 0.1278 0.6982
# $ : num [1:5] 0.15 0.733 0.19 3.548 2.08
list
列可以unnest
编辑
test1 %>%
unnest(data)
S <- 5
n <- 5
test <- tibble(
s = 1:S,
theta = rgamma(S, shape = 10*s, rate = 50)
)