【问题标题】:generate multiple data for each row with tidyverse使用 tidyverse 为每一行生成多个数据
【发布时间】:2018-03-05 07:50:57
【问题描述】:

我有一个名为 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]
...

然后将其展开为小标题:

S theta d1 d2 d3 .. dn
...

希望这很清楚。 谢谢。

【问题讨论】:

    标签: r tidyverse


    【解决方案1】:

    如果我们需要list,那么我们可以使用map 循环遍历“theta”的每个元素,并在list 中获取rexp

    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 列可以是unnested

    test1 %>%
          unnest(data)
    

    数据

    S <- 5
    n <- 5
    
    test <- tibble(
      s = 1:S,
      theta = rgamma(S, shape = 10*s, rate = 50)
    ) 
    

    【讨论】:

      猜你喜欢
      • 2016-10-10
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      • 1970-01-01
      相关资源
      最近更新 更多