我试图阻止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无关: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)