modifier la variable dans la fonction R
Comment puis-je modifier un argument passé à une fonction dans R? En C++, ce serait passer par référence.
g=4
abc <- function(x) {x<-5}
abc(g)
Je voudrais g
à être fixé à 5.
source d'informationauteur Alex
Vous devez vous connecter pour publier un commentaire.
Il existe des moyens que @Dason a montré, mais vraiment - vous ne devriez pas!
Le paradigme de R est de "passage par valeur". @Rory vient de publier la voie normale de les manipuler - il suffit de retourner la valeur modifiée...
Environnements sont généralement les seuls objets qui peuvent être passés par référence dans R.
Mais dernièrement, de nouveaux objets appelés des classes de référence ont été ajoutés à la R (ils utilisent les environnements). Ils peuvent modifier leurs valeurs (mais d'une façon contrôlée). Vous voudrez peut-être regarder dans l'aide si vous vous sentez vraiment le besoin...
Il y a obtenu d'être une meilleure façon de le faire, mais...
donne la sortie
Suis-je raté quelque chose pour expliquer pourquoi vous ne pouvez pas tout cela?
Je pense que @Dason de la méthode est la seule façon de le faire en théorie, mais en pratique je pense que R est déjà fait.
Par exemple, lorsque vous effectuez les opérations suivantes:
x
est vraiment juste un pointeur vers une valeurc(1,2)
. De même, lorsque vous neCe n'est pas que vous passez du temps à faire des copier
g
à la fonction, puis de copier le résultat dansg
. Je pense que ce R fait avec le codeest:
abc
est mis en place.x
.x
points à la même valeur queg
points.x
points à 5x
g
maintenant les points à la même valeur quex
pointé à l'heure de son retour.Ainsi, il est pas qu'il y a tout un tas de copie inutile de grandes options.
J'espère que quelqu'un peut confirmer/corriger cette.
J'ai une solution similaire à @Dason, et je suis curieux de savoir si il y a des bonnes raisons de ne pas utiliser ce ou si il y a des pièges importants je devrais être au courant: