r - 如何将向量传递给函数的点 (...) 参数

标签 r

一些 R 函数具有参数 ...,允许您传递任意数量的参数。 paste 函数就是一个例子,您可以向该函数提供任意数量的参数。但有时,您事先并不知道要通过多少个争论。

例如,假设我想在 ggplot 中生成一个图,我想通过两列的组合为点着色:

df <- data.frame(x=rnorm(100), 
                 y=rnorm(100), 
                 cat1=sample(c(TRUE, FALSE), 100),
                 cat2=sample(c(TRUE, FALSE), 100),
                 cat3=sample(c(TRUE, FALSE), 100))
ggplot(df) + aes(x=x, y=y, col=paste(cat1,cat2) + geom_point()

但现在考虑一下,我希望在运行时确定要着色的列列表。我想编写一个函数来执行以下操作:

library(rlang)
color_plot <- function(df, color_by) {
    color_by = lapply(color_by, sym)
    ggplot(df) + aes(x=x, y=y, col=paste(...=color_by)) + geom_point()
}

color_plot(df, list("cat1"))
color_plot(df, list("cat2", "cat3"))
color_plot(df, list("cat1", "cat2", "cat3"))

我想我正在寻找相当于 pythons *args 的东西,如下所示:

args =[1,2,3]
my_fun(*args)

最佳答案

使用符号:

color_plot <- function(df, color_by) {
    color_by <- syms(color_by)
    ggplot(df) + aes(x=x, y=y, col=paste(!!!color_by)) + geom_point()
}

关于r - 如何将向量传递给函数的点 (...) 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51752126/

相关文章:

python - 获取数据框中从一列到另一列的唯一连接

r - 查找具有相同观察值集的重复值

r - R: `split`保留因子的自然顺序

r - upper.tri 与 R 中的数组

r - 使用facana函数时获取因子分析分数

r - rmarkdown : workaround 中的采购引用

r - 使用 R 估算 NetCDF 数据的每月气候学

r - 根据列中的值为每个组选择前 N 行

r - R中的条形图错误

R:基于 NA 位置合并来自同一 data.frame 的列