【发布时间】:2014-03-30 03:57:47
【问题描述】:
有没有办法print 或在函数内部显示变量的值,而不是在函数被调用后在函数外部打印值?
我几乎可以肯定并认为代码被称为 reveal 或类似名称,但我不记得正确的术语。
my.function <- function(x) {
y <- x^2
# reveal(y)
# display(y)
# desired result is to print or display here:
# [1] 16
cat(y)
print(y)
return(y)
}
x <- 4
my.function(x)
#16[1] 16
#[1] 16
cat(y)、print(y) 和 return(y) 都在函数外打印。谢谢你的建议。
编辑
我在这里发现了一个类似的问题:
https://stat.ethz.ch/pipermail/r-help/2002-November/027348.html
Peter Dalgaard 对这个问题的回答是取消选中 Misc 选项卡下名为 buffered output 的选项。但是,这似乎不适用于我的情况。也许这些问题是无关的。
【问题讨论】:
-
我很困惑。你是什么意思,他们在函数之外打印?你说的是不可能的,因为
4甚至还没有被传递给函数...... -
数字16出现在
}之后。 -
当然可以!在定义函数之前,无法将
4传递给函数。 -
看看
?debug,它将逐步执行函数并允许您在函数执行的不同点检查对象。试一试,尝试debug(my.function); my.function(4),然后在其定义之后和调用return之前的任何时间输入y。 -
你也可以试试
message,它在“从函数内打印”方面做得很好——我也用它来调试并行操作。