1
如何将由逻辑向量列表和字符向量列表组成的数据帧传输到purrr::map2()
以使用逻辑向量对字符向量进行子集?用map2逻辑向量列表管道tibble()
我努力工作,没有管,但我不知道如何与管道做到这一点:
例如,使用该数据帧:
a_pair = tibble(mask = list(TRUE, c(FALSE, TRUE), TRUE, TRUE,
c(FALSE, FALSE, FALSE, TRUE), TRUE, TRUE, TRUE,
TRUE, c(FALSE, FALSE, FALSE, TRUE)),
strings = list(".", c("0.29966", "0.31145"), "0.48243",
"0.55122",
c("0.10099", "0.10142", "0.49873", "0.56246"),
"0.56246", "0.10127", "0.70687", "0.68338",
c("0.03365", "0.16895", "0.68338", "0.82954")))
这工作:
library(purrr)
map2(a_pair$mask, a_pair$strings, function(logical, string) subset(string, logical))
但是,这个(如a related question所建议的)不是:
a_pair %>% map2(., names(.), ~{subset(.y, .x)})
Error in subset.default(.y, .x) : 'subset' must be logical
我是否需要做某种不明或者以不同的方式引用逻辑向量?
要做到这一点在管道为什么呢? a_pair对象在工作表达式中显示两次,所以任何管道都必须变得复杂。当LHS是RHS的第一个参数时,管道很好,当LHS在RHS中出现一次时,管道很好,但当事情变得更加复杂时,它们是不可读的。 – user2554330
老实说,我没有工作,这对我的直接需求没问题,所以主要是因为我很好奇如何用管道做到这一点! – bheavner