代码之家  ›  专栏  ›  技术社区  ›  Demetri Pananos

在列的子集上使用pmap

  •  1
  • Demetri Pananos  · 技术社区  · 6 年前

    x , left ,和 right . 很简单,我想知道 在第j个元素之间 左边 正确的 . 以下是我迄今为止编写的一些代码:

    library(tidyverse)
    library(binom)
    
    
    params = crossing(p = seq(0.05,0.5,0.05), size = 10:100, n = 50)
    
    simulation.results = params %>% 
                          mutate(x = pmap(., rbinom)) %>% 
                          select(-n) %>% 
                          mutate(left = map2(x,size,~binom.agresti.coull(.x,.y)$lower),
                                 right = map2(x,size, ~binom.agresti.coull(.x,.y)$upper),
                                 coverage = pmap_lgl(list(x = x, left = left, right = right), between) #Problem here
                                 )
    

    我一直在犯错误

    #> Error in mutate_impl(.data, dots): Evaluation error: Expecting a single value: [extent=50]..
    

    虽然我确信我使用的语法是正确的。一个较小的例子似乎有效

    library(tidyverse)
    
    x = c(1,2,3)
    y = c(4,5,6)
    z = c(2,3,4)
    
    pmap_lgl(list(x = x,left = y, right = z), between)
    #> [1] FALSE FALSE FALSE
    

    如何确定 介于 左边 purrr

    1 回复  |  直到 6 年前
        1
  •  3
  •   akrun    6 年前

    列“x”、“left”和“right”是 list 每个元素长度大于1的列,但是 between unnest 使 列表 pmap

    params %>%
      mutate(x = pmap(., rbinom)) %>% 
      select(-n) %>% 
      mutate(left = map2(x, size, ~  
                          binom.agresti.coull(.x, .y)$lower), 
             right = map2(x,size,  ~
                           binom.agresti.coull(.x,.y)$upper)) %>%
      unnest %>% 
      mutate(coverage = pmap_lgl(list(x, left, right), between))
    

    之间 结构

    params %>% 
       mutate(x = pmap(., rbinom)) %>%
       select(-n) %>% 
       mutate(left = map2(x, size, ~
                   binom.agresti.coull(.x, .y)$lower), 
              right = map2(x,size, ~
                   binom.agresti.coull(.x,.y)$upper), 
              coverage = pmap(list(x, left, right), ~ ..1 > ..2 & ..1 < ..3)