gpt4 book ai didi

r - 用于 ! (或任何逻辑运算符)的%>%(magrittr)产生意外的输出

转载 作者:行者123 更新时间:2023-12-04 13:47:51 26 4
gpt4 key购买 nike

我遇到了一种情况,当%>%!结合使用时,会产生非常令人惊讶的输出。考虑以下代码:

x <- c(1:20)
y <- !is.na(x)

> y
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

> sum(Y)
[1] 20

好吧,那没什么奇怪的。但是,如果我尝试使用 %>%缩短它,则会发生奇怪的事情:
!is.na(x) %>% sum

[1] TRUE
TRUE ??不是我所期望的-它应该是 20

如果我删除了 !,它将按预期提供给我 0:
> is.na(x) %>% sum
[1] 0

如果我加上括号,它会起作用:
> {!is.na(x)} %>% sum
[1] 20

并将 !作为一个函数来工作:
> is.na(x) %>% `!` %>% sum
[1] 20
!is.na(x) %>% sum在做什么,为什么它返回 TRUE而不是 20

编辑:其他逻辑运算符产生类似的行为:
> T&T %>% sum()
[1] TRUE
> {T&T} %>% sum()
[1] 1

> T|T %>% sum()
[1] TRUE
> {T|T} %>% sum()
[1] 1

最佳答案

我怀疑这是操作顺序问题:

!is.na(x) %>% sum

正在评估
!(is.na(x) %>% sum)

相当于 TRUE

关于r - 用于 ! (或任何逻辑运算符)的%>%(magrittr)产生意外的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37732820/

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