【发布时间】:2013-08-18 01:46:27
【问题描述】:
我正在尝试在 R 中编写一个“导出”函数,该函数将为所需环境(例如 .GlobalEnv)中的名称分配一个值。我想使用以下语法。
# desired semantics: x <- 60
exported(x) <- 60
# ok if quotes prove necessary.
exported("x") <- 60
我尝试了几种变体。基本上:
`export<-` <- function(x, obj) {
call <- as.list(match.call())
elem <- as.character(call[[2]])
assign(elem, obj, .GlobalEnv)
get(elem, .GlobalEnv)
}
exported(x) <- 50
前面给出了关于最后一个参数未使用的错误。以下抱怨“找不到对象'x'。”
setGeneric("exported<-", function(object, ...) {
standardGeneric("exported<-")
})
setReplaceMethod("exported", "ANY", function(object, func) {
call <- as.list(match.call())
name <- as.character(call$object)
assign(name, func, other.env)
assign(name, func, .GlobalEnv)
get(name, .GlobalEnv)
})
exported(x) <- 50
上述使用字符向量代替名称的方法会产生“赋值目标扩展为非语言对象”。
这在 R 中可能吗?
编辑:我实际上想在“导出”中做更多的工作。为简洁起见省略了代码。我也意识到我可以使用以下方法:
exported(name, func) {
...
}
但我有兴趣看看我的语法是否可行。
【问题讨论】:
标签: r variable-assignment