我是一个大风扇%>%从运营商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
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-5来x+5.我希望我可以将from参数设置为.-5,但这不会给出预期的结果:
> x %>% seq(from = .-5, to = .+5)
[1] 5 15
Run Code Online (Sandbox Code Playgroud)
这似乎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
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)
| 归档时间: |
|
| 查看次数: |
463 次 |
| 最近记录: |