0
Каков правильный способ определения функции, которая возвращает произвольное количество полей.Возвращает список полей ссылочного класса
A.getFields<-function(values){
vars<-getRefClass()$fields()
idx<-names(vars) %in% values
if(length(fields)<1)
return(vars)
return(vars[idx])
}
A.setFields<-function(...){
dots <- list(...)
fieldNames <- names(dots)
for(i in seq_along(dots))
assign(fieldNames[[i]], dots[[i]], attr(.self, ".xData"))
}
A<-setRefClass(Class = "A",
fields = c(var1 = "list",
var2="character"),
methods = list(getFields=A.getFields
,setFields=A.setFields
,initialize=function(...,var1=list(), var2=character()) {
obj<-list(...)[[1]]
if(is(obj,"list"))
do.call(.self$setFields,obj)
else{
.self$var1<-as.list(var1)
.self$var2<-as.character(var2)
}
.self
})
)
a<-A(var1=list(1:3),var2="A")
a$getFields(c("var2"))
a$getFields(c("var2","var1"))
Многих ТНХАМИ, есть общий differnt для следующей функции для getFields? 'A.getFields <-функция (значения) { варов <-getRefClass() $ поле() IDX <-names (вары)% в% значениях , если (длина (поля) <1) возврата (вары) return (vars [idx]) } ' – Klaus
@Klaus Код не работает как написанный, но, похоже, возвращает типы полей, а не их значения. –
Вы правы' A.getFields <-функция (значения) { vars <-mget (names (.refClassDef @ fieldClasses), envir = attr (.self, ".xData")) if (missing (values)), sry Я прочитал это сообщение до конца. return (vars) return (vars [names (vars)% in% values]) } 'это то, что я предложил, это функция от [здесь] (http://stackoverflow.com/questions/18639140/how -в-отладочные-методы-из-референс-классов? noredirect = 1 # comment27442400_18639140) – Klaus