assign
est bon, mais je n'ai pas trouvé une fonction pour renvoyer à la variable que vous avez créé dans un script automatisé. (as.name
semble fonctionner dans le sens inverse). Les codeurs plus expérimentés auront sans doute une meilleure solution, mais cette solution fonctionne et est peut-être un peu humoristique, en ce sens que R obtient du code pour s'exécuter.
dire que je viens de valeur attribuée 5-x
(var.name <- "x"; assign(var.name, 5)
) et je veux changer la valeur à 6. Si je suis en train d'écrire un script et je ne sais pas à l'avance ce que le nom de la variable (var.name
) sera (qui semble être le point de la fonction assign
), je ne peux pas simplement mettre x <- 6
parce que var.name
aurait pu être "y"
. Alors je fais:
var.name <- "x"
#some other code...
assign(var.name, 5)
#some more code...
#write a script file (1 line in this case) that works with whatever variable name
write(paste0(var.name, " <- 6"), "tmp.R")
#source that script file
source("tmp.R")
#remove the script file for tidiness
file.remove("tmp.R")
x
sera changé à 6, et si le nom de la variable était autre chose que "x"
, cette variable aura été modifiée de façon similaire à 6.
+1 pour la pensée.Les gens (moi inclus) oublient habituellement que '<-' est une fonction elle-même. – Rob