R setRefClass工作簿字段

时间:2013-11-06 15:17:32

标签: r xlconnect

我正在宣布使用以下课程:

setRefClass("XLSXFile", 
    fields = list(
        wb= "workbook", 
        sheet= "character",
        at.line= "numeric"
    )
)

代码无法编译。我收到错误:

Error in .local(.Object, ...) : 
  argument "filename" is missing, with no default

由于以下行而生成错误:

        wb= "workbook",

如何在类中声明工作簿字段? 解释器尝试调用哪个函数需要filename参数?我猜它在loadWorkbook中,因为我正在使用XLConnect但是如何在声明类时提供参数?

1 个答案:

答案 0 :(得分:0)

是的,看起来ref class实例首先被创建为空,即通过调用默认构造函数来构造字段,这意味着错误是由于:

new('workbook')
Error in .local(.Object, ...) : 
  argument "filename" is missing, with no default

您可以使用ANY类型:

XLSXFile <- setRefClass("XLSXFile", 
  fields = list(
    wb = "ANY",
    sheet= "character",
    at.line= "numeric"
  )
)

或者可以使用这种方法使用字段构造函数:

XLSXFile <- setRefClass("XLSXFile", 
  fields = list(
    wb = function(x) { 
       message('workbook accessor/setter'); 
       # build or set the field
     },
    sheet= "character",
    at.line= "numeric"
  )
)