【发布时间】:2018-04-17 00:28:18
【问题描述】:
我在条件分支和 ifelse 分支中都使用转发结果的场景中将 ifelse 与管道一起使用。下面是一个简化版本:ifelse + pipe 似乎只处理与. 不同的条件,如果放在花括号内。
library("magrittr")
FALSE %>% ifelse(., 'true', 'false')
#> [1] "false"
FALSE %>% ifelse(. == TRUE, 'true', 'false')
#> Error in ifelse(., . == TRUE, "true", "false"): unused argument ("false")
FALSE %>% {ifelse(. == TRUE, 'true', 'false')}
#> [1] "false"
我最初的目标:
library("magrittr")
NULL %>% ifelse(is.null(.), "", as.character(.))
#> Error in ifelse(., is.null(.), "", as.character(.)): unused argument (as.character(.))
NULL %>% {ifelse(is.null(.), "", as.character(.))}
#> [1] ""
使用{} 对我来说已经足够了,但我想了解这种行为的原因。
编辑:
尽管this 问题讨论了一个相关主题,并且我最初看到将 ifelse 放在花括号内的想法,但在表达式/函数调用中仅使用 . 或使用 . 之间没有区别,这是我的重点问题。
【问题讨论】: