R RStudio重置调试/功能环境

0 debugging r rstudio

我试图阻止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)
}
Run Code Online (Sandbox Code Playgroud)

我在控制台中运行以下命令:

> x <- 1:10
> makeVector(x)
Run Code Online (Sandbox Code Playgroud)

得到:

$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>
Run Code Online (Sandbox Code Playgroud)

看起来RStudio正在返回功能代码和环境信息,而不是执行该功能.以前我运行debug(ls)和undebug(ls)作为测验的一部分 - 我的预感是debug()命令与行为有关.

要解决这个问题,我已经尝试过:

  • 删除包含RStudio设置的RStudio-Desktop文件夹.这将我的外观和全局选项恢复为默认值,但函数调用行为仍然发生.
  • 卸载并重新安装R和RStudio.行为仍然如上所述.

有谁知道为什么RStudio显示功能代码和环境而不是执行该功能?

我非常感谢你的帮助!谢谢!

ton*_*nov 5

首先,这与Rstudio无关:Rstudio只是一个IDE,如果它以某种方式设法弄乱你的代码会很奇怪,不是吗?你看到的行为是完全正确的,并且完全应该做的事情.如果您熟悉OOP,那么您获得的是具有多种方法的"对象".这是一个小型演示,显示了预期用途:

x <- 1:10
xx <- makeVector(x)
xx$get()
# [1]  1  2  3  4  5  6  7  8  9 10
xx$getmean()
#NULL
xx$setmean(mean(x))
xx$getmean()
#[1] 5.5
xx$setmean("Hi, I am a mean")
xx$getmean()
#[1] "Hi, I am a mean"
Run Code Online (Sandbox Code Playgroud)