【问题标题】:how to print the passed argument variable in R如何在R中打印传递的参数变量
【发布时间】:2019-03-14 21:42:40
【问题描述】:

我想打印传递给函数 read.table 的每个参数。我的想法是在 Python 中编写一些简单的装饰器。但是对于R,我不知道该怎么做,我学到的是使用trace()。但是,我不知道如何在 trace 中打印变量。

例子:

trace(f)
a <- "123"
f(a)
untrace(f)

trace()只会输出f(a),但我想知道a的评价。

【问题讨论】:

  • base r 的打印功能会帮助你
  • 松散相关:如果您正在谈论覆盖基本功能 read.table 以便您知道它何时被使用(无论您是否知道),那么您正在谈论覆盖一个功能在另一个包中,这可能是一个相关链接:stackoverflow.com/a/26647570/3358272。如果您想编写自己的函数并将其用作包装器,但除非您告诉它,否则不会使用它,那么只需编写您自己的函数并使用printmessage 甚至cat
  • 您可能需要查看my answer to a related question。我认为您可以轻松地调整那里的命令以满足您的需求。
  • 首先您要求传递给 read.table 的“路径”。 read.table 没有路径参数。如果您要求重新定义 read.table 函数以发出传递给 read.table 的所有参数,那么它与 Dukemayer 回答的问题重复。
  • 谢谢你们的回复。 Dukemayer 的回答与我想要的有关,但是,对于那个帖子,如果我有 myfun(1,d) 其中 d 是一个变量,我该如何打印参数 d 的评估? (例如 d

标签: r debugging trace expression-evaluation


【解决方案1】:

感谢各位大侠的帮助,我找到答案了。

只需使用以下代码:

trace(f, tracer = quote(print(lapply(as.list(match.call()),eval))))
d<-1
f(d)
untrace(f)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 2019-01-15
    • 1970-01-01
    • 2012-04-13
    • 2012-05-27
    相关资源
    最近更新 更多