有没有办法做到以下几点

ex1 <- quote(iris)
ex2 <- quote(dplyr::filter(Species == "setosa" & Sepal.Width > 4))

substitute(x %>% y, list(x = ex1, y = ex2))
#> iris %>% filter(Species == "setosa" & Sepal.Width > 4)

使用底管而不是磁管?

substitute(x |> y, list(x = ex1, y = ex2))
#> Error: The pipe operator requires a function call as RHS

推荐答案

在这里,错误消息实际上非常有用.对于底部管道,您总是需要在右侧使用圆括号.就是这么做的

substitute(x |> y(), list(x = ex1, y = ex2))
# (dplyr::filter(Species == "setosa" & Sepal.Width > 4))(iris)

确实产生了一个呼叫.但是,您可能需要更改ex2才能使调用有效:

ex1 <- quote(iris)
ex2 <- quote(\(x) dplyr::filter(x, Species == "setosa" & Sepal.Width > 4))

substitute(x |> y(), list(x = ex1, y = ex2)) |> eval()
#   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1          5.7         4.4          1.5         0.4  setosa
# 2          5.2         4.1          1.5         0.1  setosa
# 3          5.5         4.2          1.4         0.2  setosa

R相关问答推荐

用dDeliverr用第二个表更新一个表

如何将图案添加到ggplot中的一个类别

从有序数据中随机抽样

如何删除R中除某些特定名称外的所有字符串?

如何修复R码的置换部分?

随机森林回归:下拉列重要性

任意列的欧几里得距离

r替换lme S4对象的字符串的一部分

基于多列将值链接到NA

将饼图插入条形图

如何使用ggplot对堆叠条形图进行嵌套排序?

计算两列中满足特定条件连续行之间的平均值

如何在PackageStatus()中列出&q;不可用的包&q;?

为什么我使用geom_density的绘图不能到达x轴?

计算直线上点到参考点的总距离

减go R中列表的所有唯一元素对

使用来自嵌套列和非嵌套列的输入的PURRR:MAP和dplyr::Mariate

变长向量的矢量化和

用满足特定列匹配的另一行替换NA行

整理曲线图、曲线图和点图