Referência de herança de classe do pacote externo
-
21-12-2019 - |
Pergunta
Eu estou tentando substituir uma referência de método de classe.Porque de referência métodos de classe são vinculados à classe, ao invés de incluir o objeto, acredito que para fazer isso eu preciso para definir uma nova referência de classe que herda da antiga classe de referência.No entanto, a classe que eu estou a tentar herdar é definido um pacote de minas (dplyr).Eu não posso imaginar a sintaxe correta para fazer isso, contém parece necessitar apenas de um nome de texto, e não busca de definições de classes em pacotes externos.
Em particular, eu estou tentando herdar da DbDisconnector classe de referência de dplyr e sobrepor o método finalize.
Esta compreensão encontra a classe pai, mas não pode atribuir a ele, é a partir de um pacote diferente.
NewDbDisconnector <- setRefClass("NewDbDisconnector",
contains = 'DbDisconnector',
methods = list(
finalize = function() {
message("test")
}
),
where=getNamespace('dplyr')
)
# Error in assign(mname, def, where) (from file.r#75) :
# cannot add bindings to a locked environment
Contém apenas os métodos de aceitar cadeias de caracteres, eles não podem simplesmente ser dado um refClass definição de getRefClass.
NewDbDisconnector <- setRefClass("NewDbDisconnector",
contains = getRefClass("DbDisconnector", getNamespace("dplyr")),
methods = list(
finalize = function() {
message("test")
}
)
)
# Error in FUN(X[[1L]], ...) :
# the 'contains' argument should be the names of superclasses: got an element of class “name”
Eu acho que este deve ser possível, eu simplesmente não consigo descobrir a maneira correta de fazê-lo.
Solução
Você pode importar a superclasse para o seu ambiente:
DbDisconnector <- getFromNamespace("DbDisconnector", "dplyr")
E, em seguida, definir contains = "DbDisconnector"
em sua classe.