我一直在努力地让pmap()个人go 工作,并误解了我应该给它填的 list 的 struct .

基本上,我最终得到了一个列表,before个,但它在PMAP中的排列不正确.

以下是对它的最低限度的再现:

before <- list(
  list(
    tibble(a = c(10:13), b = c(13:16), c = c(17:20)),
    tibble(d = c(10:13), e = c(13:16)),
    tibble(f = c(10:13))
  ),
  list(
    tibble(a = c(10:13), b = c(13:16), c = c(17:20)),
    tibble(d = c(21:24), e = c(25:28)),
    tibble(f = c(21:24))
  ),
  list(
    tibble(a = c(31:34), b = c(35:38), c = c(20:23)),
    tibble(d = c(31:34), e = c(35:38)),
    tibble(f = c(31:34))
  ),
  list(
    tibble(a = c(40:43), b = c(43:46), c = c(47:50)),
    tibble(d = c(40:43), e = c(43:46)),
    tibble(f = c(40:43))
  )
)

然而,在pmap()中使用.l作为参数是错误的.

我想把它变成一个 list ,比如下面的after个.

after <- list(
  list(
    tibble(a = c(10:13), b = c(13:16), c = c(17:20)),
    tibble(a = c(10:13), b = c(13:16), c = c(17:20)),
    tibble(a = c(31:34), b = c(35:38), c = c(20:23)),
    tibble(a = c(40:43), b = c(43:46), c = c(47:50))
  ),
  list(
    tibble(d = c(10:13), e = c(13:16)),
    tibble(d = c(21:24), e = c(25:28)),
    tibble(d = c(31:34), e = c(35:38)),
    tibble(d = c(40:43), e = c(43:46))
  ),
  list(
    tibble(f = c(10:13)),
    tibble(f = c(21:24)),
    tibble(f = c(31:34)),
    tibble(f = c(40:43))
  )
)

那样的话,我就可以表演这个.

x <- pmap(after, my_func) 

其中my_func是一个以3个不同的TIBBER作为参数的函数.它实际上是一个创建复杂曲线图的函数.

问题是:

  • 我怎么才能把before变成after呢?
  • 使用pmap映射到一个以3位数为参数的函数,after的形式是否正确?

推荐答案

使用Purrr中的tranpose:

library(purrr)

after2 <- tranpose(before)

identical(after, after2)
## [1] TRUE

R相关问答推荐

如何在x轴下方画一条带有箭头的线?

指定要保留在wrap_plots中的传奇

如何使用ggplot重新绘制LASO回归图?

是否有任何解决方案可以优化VSCode中RScript的图形绘制?

如何创建构成多个独立列条目列表的收件箱框列?

工作流程_set带有Dplyrr风格的 Select 器,用于 Select 结果和预测因子R

如果列中存在相同的字符串,则对行值进行总和

为什么观察不会被无功值变化触发?

用预测NLS处理R中生物学假设之上的误差传播

如何改变时间图R中的悬停信息?

如何读取CSV的特定列时,给定标题作为向量

仅在Facet_WRAP()中的相应方面包含geom_abline()

合并后返回列表的数据帧列表

QY数据的处理:如何定义QY因素的水平

解析嵌套程度极高的地理数据

使用来自嵌套列和非嵌套列的输入的PURRR:MAP和dplyr::Mariate

变长向量的矢量化和

从线的交点创建面

根据r中每行中的日期序列,使用列名序列创建新列

随机将数据帧中特定列上的某些行设置为NA