【发布时间】:2014-09-23 07:44:33
【问题描述】:
我正在使用 dplyr 并创建代码来计算用 ggplot 绘制的新数据。
我想用这段代码创建一个函数。它应该采用由 dplyr 操作的数据框列的名称。但是,尝试使用列名不起作用。请考虑下面的最小示例:
df <- data.frame(A = seq(-5, 5, 1), B = seq(0,10,1))
library(dplyr)
foo <- function (x) {
df %>%
filter(x < 1)
}
foo(B)
Error in filter_impl(.data, dots(...), environment()) :
object 'B' not found
有什么办法可以将列名作为函数参数使用吗?
【问题讨论】:
-
你能提出你的问题reproducible吗?此时您正在提供一个所有(两个)值都高于 1 的数据框。
-
感谢 Jaap 的建议,我编辑了 df 以确保可重复性
-
我记得@Richard Scriven 回答了一个类似的问题。我认为你需要写类似
foo <- function(x,...)filter(x,...)的东西我现在有以下内容。不知道我写的东西是否正确。但结果似乎是对的。foo <- function (x,...) filter(x,...);foo(df, B < 1) -
@jazzurro,很遗憾我无法复制您的建议。也许您可以提供可重现的示例。
-
@jnshsrs 我使用了你的 df 并运行了代码。 R 返回第一行。你能在你的机器上用你的 df 运行代码吗?
标签: r string function character dplyr