我正在编写一个非常长的类定义,并且我想从单独的文件中获取方法的代码。大多数时候,这似乎有效,但我在尝试返回 data.frame 时遇到了一些奇怪的事情。当代码直接写在类定义中时,data.frame 可以正常返回。当它被获取时,返回的是一个长度为 2 的列表,其中第一个元素(命名value
)包含 data.frame,第二个元素(命名visible
)包含一个原子逻辑TRUE
。 如何让方法只返回 data.frame,同时将方法的代码留在单独的文件中?
这是主文件:
#MainScript.R
library(R6)
MyClass = R6Class(
classname = "myclass",
private = list(Frame = NA),
public = list(
initialize = function(){},
setFrame = function(x){private$Frame = x},
getFrame = function(){
MyData = private$Frame
return(MyData)
},
getFrame2 = function(){source("getFrame2.R", local = T)}
)
)
data1 = data.frame(v1 = rnorm(5,1,2), v2 = rnorm(5,1,2))
current = MyClass$new()
current$setFrame(data1)
current$getFrame()
current$getFrame2()
这是方法源文件:
#getFrame2.R
MyData = private$Frame
return(MyData)
请注意,这两种方法的代码完全相同。代码可以从 github 下载。