我在使用具有独特功能的管道操作符(%〉%)时遇到了一些麻烦。
df = data.frame( a = c(1,2,3,1), b = 'a') unique(df$a) # no problem here df %>% unique(.$a) # not working here # I got "Error: argument 'incomparables != FALSE' is not used (yet)"
你知道吗?
dsf9zpds1#
其他答复提到:df %>% unique(.$a)等于df %>% unique(.,.$a)。要强制点显式显示,可以执行以下操作:
df %>% unique(.$a)
df %>% unique(.,.$a)
df %>% {unique(.$a)} # [1] 1 2 3
magrittr的替代选项
magrittr
df %$% unique(a) # [1] 1 2 3
或者说是显而易见的:
df$a %>% unique() # [1] 1 2 3
ds97pgxw2#
%>%默认情况下获取左手的对象并将其输入函数的第一个参数,然后再输入其他参数,下面是一个例子:
%>%
df = data.frame( a = c(1,2,3,1), b = 'a') MyFun<-function(x,y=FALSE){ return(match.call()) } > df %>% MyFun(.$a) MyFun(x = ., y = .$a)
实际情况是%>%将df与x匹配,将.$a与y匹配。因此,对于unique,您的代码被解释为:unique(x=df, incomparables=.$a)这就解释了这个错误。对于您的情况,您需要在运行unique之前取出a。如果您想继续使用%>%,您可以使用df %>% .$a %>% unique(),但显然有很多其他方法可以做到这一点。
df
x
.$a
y
unique
unique(x=df, incomparables=.$a)
a
df %>% .$a %>% unique()
2条答案
按热度按时间dsf9zpds1#
其他答复提到:
df %>% unique(.$a)
等于df %>% unique(.,.$a)
。要强制点显式显示,可以执行以下操作:
magrittr
的替代选项或者说是显而易见的:
ds97pgxw2#
%>%
默认情况下获取左手的对象并将其输入函数的第一个参数,然后再输入其他参数,下面是一个例子:实际情况是
%>%
将df
与x
匹配,将.$a
与y
匹配。因此,对于
unique
,您的代码被解释为:unique(x=df, incomparables=.$a)
这就解释了这个错误。对于您的情况,您需要在运行unique之前取出
a
。如果您想继续使用%>%
,您可以使用df %>% .$a %>% unique()
,但显然有很多其他方法可以做到这一点。