【发布时间】:2014-06-13 05:04:47
【问题描述】:
当我调用函数时,我试图阻止 R 显示函数代码和环境信息。此功能是讲师提供的 Coursera R 编程作业的一部分。这是行为:
R 脚本:
makeVector <- function(x = numeric()) {
m <- NULL
set <- function(y) {
x <<- y
m <<- NULL
}
get <- function() x
setmean <- function(mean) m <<- mean
getmean <- function() m
list(set = set, get = get,
setmean = setmean,
getmean = getmean)
}
我在控制台中运行以下命令:
> x <- 1:10
> makeVector(x)
得到:
$set
function (y)
{
x <<- y
m <<- NULL
}
<environment: 0x000000000967dd58>
$get
function ()
x
<environment: 0x000000000967dd58>
$setmean
function (mean)
m <<- mean
<environment: 0x000000000967dd58>
$getmean
function ()
m
<environment: 0x000000000967dd58>
似乎 RStudio 正在返回函数代码和环境信息,而不是执行函数。以前我在测验中运行了 debug(ls) 和 undebug(ls) - 我的直觉是 debug() 命令与行为有关。
为了解决这个问题,我已经尝试过了:
- 删除包含 RStudio 设置的 RStudio-Desktop 文件夹。 这将我的外观和全局选项恢复为默认值,但是 函数调用行为仍然发生。
- 卸载并重新安装 R 和 RStudio。该行为仍然发生 以上。
有人知道为什么 RStudio 显示的是函数代码和环境而不是执行函数吗?
非常感谢您的帮助!谢谢!
【问题讨论】:
-
如果你从不真正调用它们,为什么它会执行这些函数?
-
澄清一下-您编写的函数创建了几个不同的函数,然后将它们以列表的形式返回给用户。他们从来没有被召唤,所以你为什么对他们从未被处决感到困惑?
-
哇,感谢您对 Dason 的启发……我想我没有仔细观察它,看不到它通过列表返回函数。我也对
部分感到困惑,我期待它使用 x 并以某种方式将其作为输出返回。所以 Dason 你是说我得到的输出是你所期望的吗?再次感谢。 -
是的,输出正是我所期望的。总的来说,作为一个好的经验法则......如果某些事情的行为不像您期望的那样,您可能想要考虑您没有像您想象的那样理解该语言,而不是跳到结论是安装失败并试图卸载所有内容。
-
为什么第一个函数需要m