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

标签 r dplyr pipe

我是 %>% 的忠实粉丝运算符(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 .

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

以下示例静默管道 10from参数并使用 . ,连同一些算术,设置 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

看来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

关于r - R 中 seq() 函数的管道运算符 %>% 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47763028/

相关文章:

c# - 将 C 输出转换为 C# 输入

c++ - 为什么我不能通过管道从两个 execl 调用输出?

python - 如何在 python 中使用 os.system() 来运行 shell 命令

r - ggplot2 水平图例元素之间的空间

r - 在 U-SQL 中执行 R

r - 使用其他动态列名更改具有条件的动态列名

r - 使用 R 和 dplyr 扩展和离散化时间序列数据

R、dplyr 和雪 : how to parallelize functions which use dplyr

r - 将 summarize 与命名向量一起使用

r - 将观察数据框转化为等级