je peux créer une variable de texte, ce cas d'une boucle, où je vais avoir plusieurs x
valeursr - obtenir le nom variable après eval/Parse ou obtenir
fx_1 <-function(varname)
{
print(paste("fx_1|variable:",deparse(substitute(varname)),"| value:",paste(varname,collapse = "@")))
}
sapply(c("var1","var2"),function(x){
assign(paste0("Example_Module_",x,"_IDS"),c("test","with","getevalparse",x))
fx_1(eval(parse(text=paste0("Example_Module_",x,"_IDS"))))
fx_1(get(paste0("Example_Module_",x,"_IDS")))
})
[1] "fx_1|variable: eval(parse(text = paste0(\"Example_Module_\", x, \"_IDS\"))) | value: [email protected]@[email protected]"
[1] "fx_1|variable: get(paste0(\"Example_Module_\", x, \"_IDS\")) | value: [email protected]@[email protected]"
[1] "fx_1|variable: eval(parse(text = paste0(\"Example_Module_\", x, \"_IDS\"))) | value: [email protected]@[email protected]"
[1] "fx_1|variable: get(paste0(\"Example_Module_\", x, \"_IDS\")) | value: [email protected]@[email protected]"
Cependant, dans ma boucle je vais besoin de passer cette variable à une fonction qui utilise deparse (substitut()) pour nommer les fichiers de sortie, similaire à la fonction fx_1
ci-dessus. J'espérais naïvement récupérer quelque chose que le Example_Module_1_IDS
Example_Module_1_IDS=c("test","with","var")
fx_1(Example_Module_1_IDS)
[1] "fx_1|variable: Example_Module_1_IDS | value: [email protected]@var"
as.symbol
ne fonctionne pas non plus, donc je me demandais s'il y a une façon de le faire?
Modifier Ajouté la fonction fx_1
et l'exemple de la boucle
ne se contente pas 'paste0 ("Example_Module_", x, "_ IDS") 'retourner ce que vous voulez? Je suis confus. Habituellement, l'utilisation de 'get/assign' est un indicateur qu'une mauvaise décision de conception R a été prise. Il est beaucoup plus facile d'utiliser des listes nommées. Vous pouvez 'Example_Module_IDS <-list (c (" test "," this "," code "))' et utiliser 'Example_Module_IDS [[1]]' ou 'Example_Module_IDS [[x]]' pour extraire cette liste. – MrFlick
Oui 'paste0 (" Example_Module _ ", x," _ IDS ")' renvoie ce que je voulais, peut-être mon exemple n'était pas complètement clair sans mon 'fx_1' et la boucle. J'ai ajouté ceux-ci maintenant, j'avais mon 'fx_1' plus tôt et j'aimais utiliser la même variable pour les données et les noms de variables (utilisés pour les fichiers de sortie) mais peut-être que je dois faire les choses différemment maintenant. – ecolog