我是 %>%
的忠实粉丝运算符(operator)来自 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
但是对于我的生活,我无法让它与管道一起正常工作。为了演示,让我偷偷摸摸这个问题。假设
x <- 10
.管道在某些情况下工作......
以下示例静默管道
10
到 from
参数并使用 .
,连同一些算术,设置 to
15
的参数,给出一个序列 10:15
正如预期的那样。> x %>% seq(.+5)
[1] 10 11 12 13 14 15
我可以明确设置
from
参数如下,它也给出了相同的预期结果( 10:15
):> x %>% seq(from = ., to = .+5)
[1] 10 11 12 13 14 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
.我可以尝试明确设置
by
参数,但现在我收到一个错误:> 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
关于r - R 中 seq() 函数的管道运算符 %>% 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47763028/