【发布时间】:2017-07-15 09:05:36
【问题描述】:
好的,假设我用我的函数创建了一个非常简单的直方图:
hist(my.fun(100))
我的直方图标题显示Histogram of my.fun(100)。这对我来说非常好!我喜欢 R 自动识别my.fun(100) 并将其放在标题和标签中的方式。
然后我做了复杂的计算,说:
n <- my.complex.algo.that.compute.size(args)
hist(my.fun(n))
这一次,标题显示Histogram of my.fun(n)。这不知道n 有多大。我知道n 将被评估为某个整数,假设对于这次运行n == 42,我希望看到直方图的标题显示Histogram of my.fun(42)。
这可能没有我自己指定标题(没有main=paste(...))。我已经尝试过这些并失败了:
hist(my.fun(`n`))
hist(my.fun(eval(n)))
【问题讨论】:
-
“我如何在 R 中做某事而不使用提供的参数来做到这一点?”是一个很奇怪的问题。显然你的尝试失败了。在
hist的帮助页面上,它说您使用参数main更改标题。如果你不喜欢这样,你可以编写你自己的 hist 函数来做你想做的事情。 -
如果你解释一下为什么我们可能不会那么困惑?特别是“(no main=paste(...))”,为什么?
-
我发现 R 有非常奇怪的评估方面(与其他通用语言如 C、Python 相比)。对于这个,我很好奇为什么
hist()可以捕捉到表达式my.fun(100)并在稍后将其作为标题中的字符串! -
@neizod 一旦你理解了 R 的评估方面,它们就没什么奇怪的了。 R 来自函数式编程语言的角落,并且与闭包一起使用。如果您查看
hist的源代码,您会立即看到该函数是如何做到这一点的。或者 Spacedman 的回答也向您展示了这一点。 -
不知道去哪里找
hist的源码?有一个question for that。 ;-)