【发布时间】:2013-12-28 20:59:41
【问题描述】:
我需要从 show 方法中恢复隐式用于调用 show 的表达式,但这仅适用于显式 show 调用:
> setClass("test", representation(a="character"))
> setMethod("show", "test", function(object) cat(deparse(substitute(object))))
[1] "show"
> show(new("test")) # explicit call: as expected
new("test")
> new("test") # implicit: not so much...
<S4 object of class structure("test", package = ".GlobalEnv")>
print 和 S3 对象似乎也有类似的问题,但我对这里的 S4 版本更感兴趣。有什么办法可以解决这个问题?我使用sys.calls 查看了调用堆栈,但没有记录使用原始表达式的调用,这表明这对我来说可能级别太低而无法轻松解决。
【问题讨论】:
-
为什么需要恢复对隐式打印的调用?这仅在交互式会话中。这是打印对象的 R 控制台。
-
我正在构建一个交互式界面,其中涉及用户以交互方式操作 S4 对象。
-
好的,但这仍然不能真正回答问题:是否有控制台要从中恢复隐式调用来显示?
-
我在 RStudio 中执行此操作,但理想情况下希望该解决方案可在任何控制台上运行,以便包含此方法的包不依赖于 UI。
标签: r s4 substitution