标题不是超级描述性的,因为问题比我能想到的合理标题要长。
我想要一个从其他函数中获取对象名称的函数,这些函数可以用作另一个函数中的参数。这是一个准系统尝试:
grab <- function(x) {
as.character(substitute(x))
}
FUN <- function(foo, bar = grab(foo)) {
bar
}
FUN(mtcars)
在这里,我想FUN
返回字符串“mtcars”,但它返回“foo”。如何制作一个抓取功能来做到这一点(我想这样做是因为我将把它用作 txt/csv 等文件的默认设置。这是一个方便的设置。
以下是一些不成功的尝试(但我想要一个通用的抓取功能):
FUN2 <- function(foo, bar = as.character(substitute(bar))) {
bar
}
FUN2(mtcars)
#==================
FUN3 <- function(foo, bar) {
if(missing(bar)) bar <- foo
as.character(substitute(bar))
}
FUN3(mtcars)
现实生活中的例子:
real_example <- function(obj, file = grab(obj)) {
write.csv(obj, file = sprintf("%s.csv", file))
}