我正在编写一个非常长的类定义,并且我想从单独的文件中获取方法的代码。大多数情况下,这似乎有效,但我在尝试返回data.frame时遇到了一些奇怪的事情。当代码直接写在类定义中时,data.frame返回正常。在获取源时,返回的是长度为2的列表,其中第一个元素(名为var $ = require('jquery');
global.$ = global.jQuery = $;
require('jquery-ui');
)包含data.frame,第二个元素(名为value
)包含原子逻辑{ {1}}。 如何让方法只返回data.frame,同时将方法的代码留在单独的文件中?
这是主文件:
visible
以下是方法源文件:
TRUE
请注意,这两种方法的代码完全相同。代码可以是downloaded from github。
答案 0 :(得分:0)
作为MrFlick suggested,实现此目的的简单方法是定义一个函数,该函数执行您希望该方法执行的操作,然后将该方法定义为对该函数的调用,并传递所需的类成员实例作为参数。
功能定义:
#getFrame3.R
getFrame3 = function(Frame){
MyData = Frame
return(MyData)
}
主文件:
#MainScript3.R
library(R6)
source("getFrame3.R")
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)},
getFrame3 = function(){return(getFrame3(private$Frame))}
)
)
data1 = data.frame(v1 = rnorm(5,1,2), v2 = rnorm(5,1,2))
current = MyClass$new()
current$setFrame(data1)
current$getFrame() #works with code in the class definition
current$getFrame2() #doesn't work
current$getFrame3() #works with function call