一些 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/