【问题标题】:purrr::pmap with anonymous function versus lapplypurrr::pmap 与匿名函数对比 lapply
【发布时间】:2018-04-27 16:44:02
【问题描述】:

Jennifer Bryan 的演讲 (https://speakerdeck.com/jennybc/row-oriented-workflows-in-r-with-the-tidyverse) 让我确信,我本学期的决心是完全致力于 tidyverse 方法。然而,我的第一次编码会议已经以失败告终:

# load the necessary packages
library(tidyverse)

# create examples of my data set
prob = tibble(names = letters[1:17])
sample1 = sample(letters, 5)

# tidyverse approach, does not work
pmap(sample1, function(x) prob == x)

# basic R approach, does work
lapply(sample1, function(x) prob == x)

# how can I change the pmap code to make it work?

所有在线匿名函数 pmap 示例都没有包含不同的对象(在我的例子中是“prob”),所以这可能是问题所在吗?或者更有可能我在如何指定匿名函数方面遗漏了什么?

【问题讨论】:

  • 代替pmap,使用map

标签: r purrr pmap


【解决方案1】:

使用map() 而不是pmap()(正如phiver 建议的那样)

  • map() 适用于一个参数

  • map2() 使用两个参数

  • pmap() 使用参数列表

【讨论】:

    【解决方案2】:

    或使用:pmap(as.list(sample1), function(x, ...) prob == x)

    编辑:

    感谢 Karl,实际上我错了,它应该是 pmap(list(sample1), function(x) prob == x),正如你所建议的那样。

    【讨论】:

    • 谢谢凯文。我一直认为向量是一个列表,但显然列表和向量之间存在差异(例如,在 pmap 的情况下)。只需将代码更改为pmap(list(sample1), function(x) prob == x) 就可以了,没有...pmap(as.list(sample1), function(x) prob == x)不行,pmap(as.list(sample1), function(x, ...) prob == x)不计算我需要的,和lapply(sample1, function(x) prob == x)一样。
    猜你喜欢
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    相关资源
    最近更新 更多