r - 查找函数返回的对象的名称

标签 r function

我的问题如下。给定以下函数:

spam <- function() {
  cat("eggs\n")
}

bla <- spam()

我想找到函数将其内容返回到的对象的名称。在示例中 bla <- spam()这将是 bla .使用 match.call我可以找到执行的调用:
match.call()
function() {
      cat("eggs\n")
    }   

但是,这不包括函数返回的对象的名称。我在 R-help 列表、google 和 SO 上环顾四周,但找不到任何有用的东西。任何建议如何继续?

背景
从我的回复中我了解到我想要的有点偏向于超神。我会解释我来自哪里,这可能会阐明我的动机。我工作的上下文与测试有关,更具体地说,是测试某个对象是否随时间变化(例如模型输出)。

通常,用户会编写一堆代码来生成一个对象,保存它并随着时间的推移将保存的对象与新生成的对象进行比较。用户可以使用以下函数执行此操作:
spam <- testReferenceChange(expression)

通常这个函数会读取引用并生成一个新对象,用户可以相互比较。为了重新生成引用文件,我想使用完全相同的代码。我通过更改全局选项(参见 optionsgetOption )、recalculate 来做到这一点。 .我们在重新计算模式下运行这个函数,存储新的引用。现在是我的问题的原因。在保存对文件的引用(使用 save() )时,我想使用用户返回的对象的名称,结合一个日期,来创建一个唯一的名称。

最佳答案

...我很难想象你为什么会想要这个。另外,您的 spam函数返回 NULL所以这似乎更没有意义......

尽管如此,最简单/最干净的方法是将名称传递给 spam功能!

spam <- function(name) {
   cat(name, "<- eggs\n")
   42 # return a value
}


bla <- spam("bla")

更上一层楼,您可以拥有 spam做作业。你也可以玩substitute允许指定不带引号的名称:
spam <- function(name) {
   name <- as.character(substitute(name))
   cat(name, "<- eggs\n")
   value <- 42
   assign(name, value, parent.frame())
}

spam(bla)
bla # 42

关于r - 查找函数返回的对象的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8522247/

相关文章:

r - ggplot2: "geom_point requires the following missing aesthetics: x, y"

function - 在 Rust 中,什么是 `fn() -> ()` ?

c++ - 为什么 std::binary_function<...> 没有 operator() 方法?

javascript - 分配给 {}.toString 是什么意思?

javascript - React 组件功能在单击按钮上不起作用

r - 给定列表的一个元素,如何恢复其在列表中的索引?

r - 找不到函数 "cbind.na"

r - 从 R 中的函数捕获打印输出(但仍返回其值)

r - 从 PostGis 数据库中查询边界内填充 OSM 数据的所有主要道路

PHP 尝试使用命名空间函数(不是类)