提问人:Dan Adams 提问时间:11/4/2022 最后编辑:Dan Adams 更新时间:11/5/2022 访问量:60
将具有相同名称的额外(点)参数传递给不同的内部函数
Pass extra (dots) arguments with same name to different internal functions
问:
假设我有一个函数,它在内部调用不同的函数,这两个函数恰好都采用名称为 的参数。在某些情况下,我想把我的论点发送给一个,有时是另一个。有没有办法在调用 f()
时指定我的意思是哪一个?f(...)
color
...
下面是一个简单的示例。
library(ggplot2)
f <- function(...) {
ggplot(mtcars, aes(disp, mpg)) +
geom_point(aes(...), ...)
}
# in this case I want it OUTSIDE aes()
f(color = "blue") # should be geom_point(color = blue)
# here I want it INSIDE aes()
f(color = cyl) # should be geom_point(aes(color = cyl))
#> Error in list2(na.rm = na.rm, ...): object 'cyl' not found
创建于 2022-11-04 使用 reprex v2.0.2
答:
1赞
Dan Adams
#1
首先,在同一函数中提供两个同名的不同函数参数必然是模棱两可的。因此,使用可能不是最好的方法。可以在此线程中找到可能的解决方案。...
在此示例中,参数从 BOTH 传递给 BOTH,因为它们都接受一个参数。第一个示例之所以有效,是因为在两个地方都提供不会引发错误。color
...
aes()
geom_point()
color
color = "blue"
library(ggplot2)
ggplot(mtcars, aes(disp, mpg)) +
geom_point(aes(color = "blue"), color = "blue")
创建于 2022-11-04 使用 reprex v2.0.2
最后,通过对原始函数进行小幅调整,可以灵活地提供给函数的任一部分,但该方法可能不会超出这个狭窄的用例,因此可能不会有太大帮助。color
library(ggplot2)
f <- function(...) {
ggplot(mtcars, aes(disp, mpg)) +
geom_point(...)
}
f(color = "blue")
f(aes(color = factor(cyl)))
创建于 2022-11-04 使用 reprex v2.0.2
评论
aes(col = 'abc')
color = 'abc'
geom_point
color
colour
.data
...
...