`dplyr::过滤器`in`mapply`

`dplyr::过滤器`in`mapply`,r,dplyr,R,Dplyr,对于以下代码,我期望得到与dplyr::filter(tab,A

对于以下代码,我期望得到与dplyr::filter(tab,A<3)相同的结果


选项卡在第二种情况下,指定
过滤器的参数。不清楚为什么需要在此处使用
mapply
而不是
过滤器(选项卡,a<3)
。此外,在tidyverse中,它将是
map(列表(选项卡),~.x%>%filter(!!quo(A<3))
我认为这是因为
mappy
..
视为其函数的参数,而不是
filter
的参数。当
过滤器
表达式被传递到
中时,指定
MoreArgs
更好。…
您可以显式使用匿名函数调用
mapply(函数(x,y)过滤器(x,!!y)、列表(选项卡)、列表(引号(A<3))、SIMPLIFY=FALSE)
您将
mapply
视为其函数的参数,而不是
过滤器的参数,这似乎是正确的。在给定的情况下,建议的匿名函数工作得很好,或者
filter\uu
也解决了这个问题。通常,
function(x,…)do.call(fun,c(list(x),list(…)))
应该这样做。在第二种情况下,您需要指定
filter
的参数。不清楚为什么需要在此处使用
mapply
而不是
过滤器(选项卡,a<3)
。此外,在tidyverse中,它将是
map(列表(选项卡),~.x%>%filter(!!quo(A<3))
我认为这是因为
mappy
..
视为其函数的参数,而不是
filter
的参数。当
过滤器
表达式被传递到
中时,指定
MoreArgs
更好。…
您可以显式使用匿名函数调用
mapply(函数(x,y)过滤器(x,!!y)、列表(选项卡)、列表(引号(A<3))、SIMPLIFY=FALSE)
您将
mapply
视为其函数的参数,而不是
过滤器的参数,这似乎是正确的。在给定的情况下,建议的匿名函数工作得很好,或者
filter\uu
也解决了这个问题。通常,
函数(x,…)do.call(fun,c(list(x),list(…)))
应该这样做。
tab <- data.frame( A = 1:3, B = letters[1:3] )
mapply( dplyr::filter, .data = list(tab), list( quote(A < 3) ), SIMPLIFY = FALSE  )
mapply( dplyr::filter, .data = list(tab), MoreArgs = list( quote(A < 3) ), SIMPLIFY = FALSE )