管道操作员%>;%R中的seq()函数出错
我非常喜欢管道操作员%>;%R中的seq()函数出错,r,dplyr,pipe,R,Dplyr,Pipe,我非常喜欢%%>%%操作符,它来自magrittr/dplyr,并尽可能使用它。但是,我在使用它连接到seq()函数时遇到了问题 举个简单的例子,假设我有一个变量x,我想创建一个从x-5到x+5的序列。我可以这样做: > x <- 10 > seq(from = x-5, to = x+5, by = 1) [1] 5 6 7 8 9 10 11 12 13 14 15 我可以按如下所示显式设置from参数,并且它也会给出相同的预期结果(10:15): 但在别人身
%%>%%
操作符,它来自magrittr
/dplyr
,并尽可能使用它。但是,我在使用它连接到seq()
函数时遇到了问题
举个简单的例子,假设我有一个变量x
,我想创建一个从x-5
到x+5
的序列。我可以这样做:
> x <- 10
> seq(from = x-5, to = x+5, by = 1)
[1] 5 6 7 8 9 10 11 12 13 14 15
我可以按如下所示显式设置from
参数,并且它也会给出相同的预期结果(10:15
):
但在别人身上不起作用。。。
现在对上一个示例进行一些调整。我想尝试复制我的初始示例,并生成一个从x-5
到x+5
的序列。我希望我可以将from
参数设置为-5
,但这并没有给出预期的结果:
> x %>% seq(from = .-5, to = .+5)
[1] 5 15
看来from
和to
分别被正确设置为5
和15
。但是,by
参数似乎已设置为
(即10
),以给出意外结果5 15
,而不是序列5:15
我可以尝试通过参数显式设置,但现在出现错误:
> x %>% seq(from = .-5, to = .+5, by = 1)
Error in seq.default(., from = . - 5, to = . + 5, by = 1) :
too many arguments
您可以看到它在这里做了什么,将
管道化到第一个参数,但是它还有我的三个显式参数要处理,以及错误结果
直到我想使用from
参数中的
做一些算术之前,它一直工作得很好。
是否有一种方法可以实现我想做的事情,或者某些函数与%%>%%
不完全兼容只是生活中的一个事实?您可以阻止%%
插入。在第一个参数中,用大括号包围右侧:
10 %>% { seq(from = .-5, to = .+5) }
## [1] 5 6 7 8 9 10 11 12 13 14 15
天哪,这么简单吗?!谢谢:)
> x %>% seq(from = .-5, to = .+5, by = 1)
Error in seq.default(., from = . - 5, to = . + 5, by = 1) :
too many arguments
10 %>% { seq(from = .-5, to = .+5) }
## [1] 5 6 7 8 9 10 11 12 13 14 15