我有一个通用函数,它调用一个使用公式的表达式,我希望将这些函数传递给存储某些特定变量并修改由特定模式指定的公式部分的各种环境。
以下是一个例子:
# Let's assume I have an environment storing a variable
env <- new.env()
env$..M.. <- "Sepal.Length"
# And a function that calls an expression
func <- function() summary(lm(..M.. ~ Species, data = iris))$r.squared
# And let's assume I am trying to evaluate it within the environment
environment(func) <- env
# And I would like to have some method that makes it evaluate as:
summary(lm(Sepal.Length ~ Species, data = iris))$r.squared
到目前为止,我提出了一个非常脏的解决方案,它基于将函数解压缩为字符串,greping然后再解析它。它是这样的:
tfunc <- paste(deparse(func), collapse = "")
tfunc <- gsub("\\.\\.M\\.\\.", ..M.., tfunc, perl = TRUE)
tfunc <- eval(parse(text = tfunc))
所以是的,它有效,但我想找到一个更干净的方法,有点神奇地将这个..M..
模式替换为Sepal.Length
而不需要所有这些解析和去除。
所以我真的很感激这个问题的一些帮助和提示。