繁体   English   中英

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

[英]Pipe operator %>% error with seq() function in R

我是magrittr / 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

但对于我的生活,我不能让它与管道正常工作。 为了演示,让我稍微谈谈这个问题。 假设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-5x+5的序列。 我希望我可以将from参数设置为.-5 ,但这不会给出预期的结果:

> x %>% seq(from = .-5, to = .+5)
[1]  5 15

似乎将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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM