J'essaie de transmettre pas mal d'arguments à une fonction (en fait, c'est une fonction de classe initialize de référence). Je songe à utiliser trois points d'ellipse pour transmettre des arguments à l'initialiseur de classe, mais cela ne fonctionne pas. Voici mon exemple de code:Comment utiliser des points de suspension pour transmettre des arguments et évaluer dans un autre environnement dans R
SomeClass<-setRefClass("SomeClass",
fields=list(a="numeric",b="numeric",c="character"))
SomeClass_1<-setRefClass("SomeClass_1",contains="SomeClass")
SomeClass_2<-setRefClass("SomeClass_2",contains="SomeClass")
getExpression<-function(...){
return(substitute(list(...)))
}
ex1<-getExpression(a=1:3,b=pmax(2:4,3:5),c=c("test","test1","test2"))
d<-TRUE
if(d){
newclass<-SomeClass_1(do.call(eval,as.list(ex1)))
}else{
newclass<-SomeClass_2(do.call(eval,as.list(ex1)))
}
Il me donne des messages d'erreur:
Error in (function (expr, envir = parent.frame(), enclos = if (is.list(envir) || :
unused arguments (a = 1:3, b = pmax(2:4, 3:5), c = c("test", "test1", "test2"))
Je ne suis pas sûr de savoir comment évaluer un tas d'arguments pour initialiser une classe de référence? S'il vous plaît partagez vos pensées Merci d'avance!
Merci! Ça marche. Mais je me demande toujours si je peux décomposer l'évaluation d'expression? – chl111
J'ai du mal à imaginer quand ou comment cela serait utile. Vous pourriez peut-être poster une nouvelle question avec un exemple reproductible où cette solution ne fonctionnera pas. – MrFlick