【发布时间】:2021-12-24 20:50:42
【问题描述】:
我有一个函数,它接受一个数据框及其列并以各种方式处理它(为简单起见,省略了)。我们可以将列名作为参数放入或直接在函数参数中转换列(如here)。我需要找出函数中传递了哪些对象。
可重现的例子:
df <- data.frame(x= 1:10, y=1:10)
myfun <- function(data, col){
col_new <- eval(substitute(col), data)
# magic part
object_name <- ...
# magic part
plot(col_new, main= object_name)
}
例如,myfun(data= df, x*x) 的预期输出是绘图 plot(df$x*df$x, main= "x")。所以标题是x,而不是x*x。到目前为止,我得到的是:
myfun <- function(data, col){
colname <- tryCatch({eval(substitute(col))}, error= function(e) {geterrmessage()})
colname <- gsub("' not found", "", gsub("object '", "", colname))
plot(eval(substitute(col), data), main= colname)
}
这个函数给出了预期的输出,但必须有一些更优雅的方法来找出输入所指的对象。答案必须是基数 R。
【问题讨论】:
-
您要退回什么? “x”作为字符串?作为一个符号?
-
@Adam 作为字符串。第二个函数返回预期的输出。
-
@G.Grothendieck 我编辑了问题。