我正在使用magrittr对数值列表进行筛选,找出那些不是NA的值。以下是一个简单的例子:
data.frame(data = c(1:2, NA, 4:5, NA, 7)) %>% is.na
产生正确结果的:
data
[1,] FALSE
[2,] FALSE
[3,] TRUE
[4,] FALSE
[5,] FALSE
[6,] TRUE
[7,] FALSE
当我在is.na
前面加上非运算符!
时,会出现错误:
data.frame(data = c(1:2, NA, 4:5, NA, 7)) %>% !is.na
给了我一个错误:Error in FUN(left, right) : operations are possible only for numeric, logical or complex types
经过多次尝试,我偶然发现了这个可行的方法:
data.frame(data = c(1:2, NA, 4:5, NA, 7)) %>% is.na %>% !.
data
[1,] TRUE
[2,] TRUE
[3,] FALSE
[4,] TRUE
[5,] TRUE
[6,] FALSE
[7,] TRUE
我的问题是是否有其他方法可以做到这一点。包中有其他别名选项,但我没有看到它们的任何示例。其中之一是“not”。也许我应该使用那个?
我意识到我在某种程度上已经回答了自己的问题,但我想知道是否可以在不必在结尾处使用%>% !.
的情况下完成此操作。
not
替换了\
!\
,也可以。这解释了别名的目的。 - Mark Danesenot
被定义为function (x) .Primitive("!")
,这等同于调用!
运算符下层的函数。 - jdharrisonmagrittr
管道运算符分离。 - Carl Witthoft