R中的seq()函数管道运算符%>%错误

Stu*_*len 9 r pipe dplyr

我是一个大风扇%>%从运营商magrittr/ dplyr并使用它只要有可能.但是,我遇到了问题,用它来管道seq()功能.

作为一个简单的例子,假设我有一个变量x,我想从创建序列x-5x+5.我可以这样做:

> x <- 10
> seq(from = x-5, to = x+5, by = 1)
 [1]  5  6  7  8  9 10 11 12 13 14 15
Run Code Online (Sandbox Code Playgroud)

但对于我的生活,我不能让它与管道正常工作.为了演示,让我稍微谈谈这个问题.假设x <- 10.

管道在某些情况下工作......

下面的示例以静默方式10传递给from参数,并使用.和一些算法将to参数设置为15,10:15按预期给出序列.

> x %>% seq(.+5)
[1] 10 11 12 13 14 15
Run Code Online (Sandbox Code Playgroud)

我可以显式设置如下from参数,它也给出了相同的预期结果(10:15):

> x %>% seq(from = ., to = .+5)
[1] 10 11 12 13 14 15
Run Code Online (Sandbox Code Playgroud)

但是在别人身上不起作用......

现在对前一个例子进行一些调整.我想尝试复制我最初的例子,从生产序列x-5x+5.我希望我可以将from参数设置为.-5,但这不会给出预期的结果:

> x %>% seq(from = .-5, to = .+5)
[1]  5 15
Run Code Online (Sandbox Code Playgroud)

这似乎fromto正在正确设置515分别.但似乎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
Run Code Online (Sandbox Code Playgroud)

您可以看到它在这里做了什么,.将第一个参数括起来,但是它还有我的三个显式参数来处理,并且错误结果.

它工作正常,直到我想.from参数中使用一些算术.

有没有办法做我想做的事情,或者某些功能与某些功能不完全兼容只是生活中的事实%>%

G. *_*eck 10

您可以防止%>%插入.通过用括号括起来围绕右侧进入第一个参数:

10 %>% { seq(from = .-5, to = .+5) }
## [1]  5  6  7  8  9 10 11 12 13 14 15
Run Code Online (Sandbox Code Playgroud)