gpt4 book ai didi

r - 结合管道和 magrittr 点 (.) 占位符

转载 作者:行者123 更新时间:2023-12-04 14:56:34 26 4
gpt4 key购买 nike

我对 R 相当陌生,我正在尝试理解 %>%运算符和“.”(点)占位符的用法。作为一个简单的示例,以下代码有效

library(magrittr)
library(ensurer)
ensure_data.frame <- ensures_that(is.data.frame(.))
data.frame(x = 5) %>% ensure_data.frame

但是以下代码失败
ensure_data.frame <- ensures_that(. %>% is.data.frame)
data.frame(x = 5) %>% ensure_data.frame

我现在将占位符通过管道传输到 is.data.frame 方法中。

我猜这是我对点占位符的限制/解释的理解滞后,但谁能澄清这一点?

最佳答案

“问题”是 magrittr 有一个匿名函数的简写符号:

. %>% is.data.frame

大致相同
function(.) is.data.frame(.)

换句话说,当点是(最左边的)左侧时,管 Prop 有特殊的行为。

您可以通过几种方式逃避这种行为,例如
(.) %>% is.data.frame

或 LHS 与 . 不同的任何其他方式
在这个特定的例子中,这可能看起来是不受欢迎的行为,但在这样的例子中,通常不需要管道第一个表达式,所以 is.data.frame(.). %>% is.data.frame 一样富有表现力, 和
像这样的例子
data %>% 
some_action %>%
lapply(. %>% some_other_action %>% final_action)

可以说比
data %>% 
some_action %>%
lapply(function(.) final_action(some_other_action(.)))

关于r - 结合管道和 magrittr 点 (.) 占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36716710/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com