Toujours en train d'entrer dans la logique R ... quelle est la "meilleure" façon de décompresser (sur LHS) les résultats d'une fonction renvoyant plusieurs valeurs?
Je ne peux pas faire ça apparemment:
R> functionReturningTwoValues <- function() { return(c(1, 2)) }
R> functionReturningTwoValues()
[1] 1 2
R> a, b <- functionReturningTwoValues()
Error: unexpected ',' in "a,"
R> c(a, b) <- functionReturningTwoValues()
Error in c(a, b) <- functionReturningTwoValues() : object 'a' not found
dois-je vraiment faire ce qui suit?
R> r <- functionReturningTwoValues()
R> a <- r[1]; b <- r[2]
ou le programmeur R écrirait-il quelque chose de plus comme ceci:
R> functionReturningTwoValues <- function() {return(list(first=1, second=2))}
R> r <- functionReturningTwoValues()
R> r$first
[1] 1
R> r$second
[1] 2
--- modifié pour répondre aux questions de Shane ---
Je n'ai pas vraiment besoin de donner de noms aux parties de valeur de résultat. J'applique une fonction d'agrégation au premier composant et une autre au deuxième composant ( min
et max
si c'était la même fonction pour les deux composants, je n'aurais pas besoin de les diviser).
attr
sur votre valeur de retour.