217 votes

Convertir une colonne data.frame en vecteur ?

J'ai un cadre de données tel que :

a1 = c(1, 2, 3, 4, 5)
a2 = c(6, 7, 8, 9, 10)
a3 = c(11, 12, 13, 14, 15)
aframe = data.frame(a1, a2, a3)

J'ai essayé ce qui suit pour convertir une des colonnes en vecteur, mais cela ne fonctionne pas :

avector <- as.vector(aframe['a2'])
class(avector) 
[1] "data.frame"

C'est la seule solution que j'ai trouvée, mais je suppose qu'il doit y avoir une meilleure façon de procéder :

class(aframe['a2']) 
[1] "data.frame"
avector = c()
for(atmp in aframe['a2']) { avector <- atmp }
class(avector)
[1] "numeric"

Nota: Mon vocabulaire ci-dessus est peut-être erroné, veuillez me corriger si c'est le cas. Je suis encore en train d'apprendre le monde de R. De plus, toute explication de ce qui se passe ici est appréciée (par exemple, un lien avec Python ou un autre langage serait utile !)

2voto

0range Points 903

Nous pouvons également convertir les colonnes de data.frame de manière générique en un simple vecteur. as.vector n'est pas suffisant car il conserve la classe et la structure data.frame, nous devons donc également retirer le premier (et seul) élément :

df_column_object <- aframe[,2]
simple_column <- df_column_object[[1]]

Toutes les solutions proposées jusqu'à présent nécessitent de coder en dur les titres des colonnes. Cela les rend non génériques (imaginez que cela s'applique aux arguments de fonction).

Sinon, vous pourriez, bien sûr, lire d'abord les noms des colonnes et les insérer ensuite dans le code des autres solutions.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X