【发布时间】:2021-06-23 11:51:19
【问题描述】:
所以在这里,当我使用索引 (".y") 浏览列表时,我遇到了 imap 错误。下面我已经让它与 map2 一起工作,但这很令人困惑,因为我制作 map2() 函数的方式与我认为 imap 会做的方式完全相同。但显然不是,否则不会出错。
我很想尽可能地理解 purrr 的逻辑,谁能告诉我这是怎么回事?
library(purrr)
l1 <- list(a='a', b='b')
# single brackets - 'missing value where TRUE/FALSE needed'
imap(l1, ~{
y1 <- names(l1)[.y]
if(y1 == 'a') out1 <- TRUE
if(y1 == 'b') out1 <- FALSE
out
})
# double brackets - subscript out of bounds
imap(l1, ~{
y1 <- names(l1)[[.y]]
if(y1 == 'a') out1 <- TRUE
if(y1 == 'b') out1 <- FALSE
out
})
# emulating what I think imap() does
map2(l1, seq_along(l1), ~{
y1 <- names(l1)[.y]
if(y1 == 'a') out1 <- TRUE
if(y1 == 'b') out1 <- FALSE
out1
})
【问题讨论】: