Donner le nom de variable de liste
donc, nous savons que les R ont list()
variable, et aussi savoir que la R a la fonction d'appel names()
de donner des noms de variable. Par exemple :
a=30
names(a)="number"
a
# number
# 30
Mais maintenant, je veux donner une liste variable d'un nom, comme ceci :
b=list()
names(b)="number"
et il renvoie un message d'erreur comme ceci :
Error in names(b) = "number" :
'names' attribute [1] must be the same length as the vector [0]
Ce que j'ai supposé faire? Je le fais parce que j'ai besoin de beaucoup de variables de liste. Ou, avez-vous un autre moyen pour que je puisse faire de nombreuses variables de liste sans jouer avec son nom?
- Dans le cas précédent, il a une longueur de 1, dans la
list
il est de longueur 0. Si vous neb = list(30); names(b) <- 'number'
devrait fonctionner - merci, c'est du travail!
Vous devez vous connecter pour publier un commentaire.
Depuis @akrun n'a pas besoin de plus de points, voici un exemple montrant comment vous pouvez attribuer des noms à une liste:
Il semble comme si vous êtes intéressé par l'étiquetage de l'objet lui-même plutôt que les éléments qui le composent. L'essentiel est que le
names
attribut d'un objet de la liste est nécessairement affecté à l'un de ses éléments. Une option, puisque vous avez dit que vous avez de nombreux objets de la liste, est de stocker les listes dans une grande liste et ensuite, vous pouvez affecter des noms à la grande liste, et les éléments de la liste-les objets peuvent être nommés trop.Une autre option, vous pouvez faire usage de la
label
fonctionnalité dans leHmisc
paquet. Il modifie la plupart des objets courants dans la R d'avoir une sous-classe "labellisés" et donc chaque fois que vous imprimez la liste, il montre l'étiquette. Il est bon pour la documentation et l'organisation de l'espace de travail un peu mieux, mais la mise en garde il est très facile de accidentellement jeté étiquetés objets à un non-étiquetés de la classe et de confondre les méthodes qui ne pense pas à la recherche de plus d'une classe.Une autre option est de faire le "nom" de votre liste objet d'un réel élément de la liste. Vous allez le voir dans beaucoup de complexes R structures de données, c'est la meilleure façon de stocker les étiquettes, les titres ou les noms lorsqu'un tel besoin se pose et n'est pas remplie par la base de R structure de données.
La dernière possibilité est que vous avez besoin d'un espace réservé pour stocker les noms d'attribut des éléments que vous n'avez pas encore rempli la liste. Si les éléments sont de longueur connue et d'un type connu, vous pouvez affecter un vecteur en utilisant par exemple
numeric(1)
une sorte de "amorcée" vecteur, qui peut être nommé. Si vous ne connaissez pas la structure de données de votre sortie, je n'utiliserais pas cette approche car elle peut être un véritable dévoreur de mémoire à "construire" des structures de données dans R.D'autres possibilités sont