Comment faire pour convertir une liste de vecteurs de longueurs différentes pour un produit de bloc de données dans R?
J'ai une (assez longue) liste de vecteurs. Les vecteurs sont constitués de mots russes que j'ai obtenu en utilisant le strsplit()
fonction de phrases.
La suivante est ce que head()
retourne:
[[1]]
[1] "модно" "создавать" "резюме" "в" "виде"
[[2]]
[1] "ты" "начианешь" "работать" "с" "этими"
[[3]]
[1] "модно" "называть" "блогер-рилейшенз" "―" "начинается" "задолго"
[[4]]
[1] "видел" "по" "сыну," "что" "он"
[[5]]
[1] "четырнадцать," "я" "поселился" "на" "улице"
[[6]]
[1] "широко" "продолжали" "род."
Note les vecteurs sont de longueur différente.
Ce que je veux, c'est être capable de lire les premiers mots de chaque phrase, le deuxième mot, la troisième, etc.
Le résultat souhaité serait quelque chose comme ceci:
P1 P2 P3 P4 P5 P6
[1] "модно" "создавать" "резюме" "в" "виде" NA
[2] "ты" "начианешь" "работать" "с" "этими" NA
[3] "модно" "называть" "блогер-рилейшенз" "―" "начинается" "задолго"
[4] "видел" "по" "сыну," "что" "он" NA
[5] "четырнадцать," "я" "поселился" "на" "улице" NA
[6] "широко" "продолжали" "род." NA NA NA
J'ai essayé de l'utiliser juste data.frame()
mais cela ne fonctionne pas parce que les lignes sont de longueur différente. J'ai aussi essayé rbind.fill()
de la plyr
paquet, mais cette fonction peut uniquement traiter des matrices.
J'ai trouvé quelques autres questions ici (c'est là que j'ai eu l' plyr
aide d'), mais ceux-ci étaient tous sur les combinant, par exemple, deux blocs de données de taille différente.
Merci pour votre aide.
- peut-être
sapply(1:length(your_list),function(j) yourlist[[j]][1])
?
Vous devez vous connecter pour publier un commentaire.
essayez ceci:
le truc, c'est que,
retourne le vecteur + deux NAs
sapply(word.list, '[', seq(max(sapply(word.list, length))))
(comme indiqué ici)t()
pour créer les colonnes appropriées, comme dans la question d'origine.Un liner avec
plyr
Vous pouvez faire quelque chose comme ceci :
Qui donne :
NA
valeurs. Lesapply
extrait de code que j'ai mis dans un commentaire renvoieNA
pour la liste des éléments qui sont plus courtes que la demande de valeur de l'indice. N'est-ce pas gentil desapply
ne pas tomber en panne? 🙂Une autre option est
stri_list2matrix
delibrary(stringi)
REMARQUE: les Données de @juba post.
Ou comme @Valentin mentionné dans les commentaires
sapply(l, "length<-", max(lengths(l)))
vous pouvez également utiliser
rbindlist()
de données.table-paquet.Convertir les vecteurs de données.table ou les données.cadre et de la transposer (pas sûr si cela réduit la vitesse d'un lot) avec l'aide de
lapply()
. Puis les lier avecrbindlist()
de remplissage des cellules manquantes avec NA:Une autre option pourrait consister à définir une fonction comme ceci (il faudrait imiter
rbind.fill
) ou l'utiliser directement à partir derowr
package:Ce qui concerne