Est-il possible de créer de nouveaux noms de variables à la volée?
J'aimerais lire les cadres de données d'une liste dans de nouvelles variables avec des nombres à la fin. Quelque chose comme orca1, orca2, orca3 ...
Si j'essaye quelque chose comme
paste("orca",i,sep="")=list_name[[i]]
J'obtiens cette erreur
target of assignment expands to non-language object
Y a-t-il une autre solution?
Réponses:
Utilisez
assign
:la source
paste0
?Il me semble que vous pourriez être mieux avec une liste plutôt que d' utiliser
orca1
,orca2
etc, ... il serait alorsorca[1]
,orca[2]
...Habituellement, vous faites une liste de variables différenciées par rien d'autre qu'un nombre, car ce nombre serait un moyen pratique d'y accéder plus tard.
Sinon,
assign
c'est exactement ce que vous voulez.la source
Ne créez pas de trames de données. Gardez la liste, nommez ses éléments mais ne l'attachez pas.
La principale raison à cela est que si vous créez des variables en déplacement, vous devrez presque toujours parcourir chacune d'elles par la suite pour effectuer quelque chose d'utile. Là, vous serez à nouveau obligé de parcourir chacun des noms que vous avez créés à la volée.
Il est beaucoup plus facile de nommer les éléments de la liste et de parcourir les noms.
En ce qui concerne l'attachement, sa très mauvaise pratique de programmation dans R et peut entraîner beaucoup de problèmes si vous ne faites pas attention.
la source
FAQ dit:
Si tu as
tu peux faire
pour
ou
pour
Il semble donc que vous utilisiez GET lorsque vous souhaitez évaluer une formule qui utilise une variable (telle qu'une concaténation) et ASSIGN lorsque vous souhaitez affecter une valeur à une variable pré-déclarée.
Syntaxe pour assign: assign (x, value)
X: un nom de variable, donné sous forme de chaîne de caractères. Aucune coercition n'est effectuée et le premier élément d'un vecteur de caractère de longueur supérieure à un sera utilisé, avec un avertissement.
valeur: valeur à affecter à x.
la source
Une autre solution délicate consiste à nommer les éléments de la liste et
attach
cela:la source
attach
que vous posez généralement la mauvaise question ...Et cette option?
Cela fonctionne parfaitement. Dans l'exemple que vous avez mis, la première ligne est manquante, puis vous donne le message d'erreur.
la source