0
I varable Ausdruck einer lazyeval Funktion zu übergeben bin versucht:Parameter im Argument für lazy evaluation
test <- function(expr){
tmp <- iris[eval(substitute(expr), iris), ]
#actually do and return complicated stuff with tmp
return(data.frame(n = nrow(tmp), sepal.length = mean(tmp$Sepal.Length)))
}
test.species <- function(species){
return(test(Species == substitute(species)))
}
#usage:
test.species("virginica")
Der Funktionstest funktioniert gut. Aber warum funktioniert test.species nicht?
Danke:
bquote
können hier stattdessen verwendet werden! Das funktioniert perfekt. Wie ich gerade herausgefunden habe, würde eval (substitute (Species ==. (Species))) auch funktionieren. Gibt es hier einen Unterschied zwischen bquote und substitute? –Denken Sie daran, dass eine nicht-standardmäßige Auswertung nett sein kann, aber es ist normalerweise besser, bei der Standardauswertung zu bleiben (was z. B. einfacher zu debuggen ist). – Roland
@HengruiJiang Wo stellst du das hin? Es sollte nicht funktionieren. – Roland