J'essaie d'écrire un fichier de données dans R vers un fichier texte, mais il retourne à la suite d'erreur suivante: J'ai utilisé la commande suivante pour l'exportation: p> XXX PRE> Je n'ai aucune idée de ce que le problème pourrait découler de. En ce qui concerne les "données manquantes où le vrai / faux est nécessaire", je n'ai qu'une colonne contenant des valeurs vraies / fastes et aucune de ces valeurs ne manque. p> Contenu du DataFrame: P> > str(df)
'data.frame': 776 obs. of 15 variables:
$ Age : Factor w/ 4 levels "","A","J","SA": 2 2 2 2 2 2 2 2 2 2 ...
$ Sex : Factor w/ 2 levels "F","M": 1 1 1 1 2 2 2 2 2 2 ...
$ Rep : Factor w/ 11 levels "L","NR","NRF",..: 1 1 4 4 2 2 2 2 2 2 ...
$ FA : num 61.5 62.5 60.5 61 59.5 59.5 59.1 59.2 59.8 59.9 ...
$ Mass : num 20 19 16.5 17.5 NA 14 NA 23 19 18.5 ...
$ Vir1 : num 999 999 999 999 999 999 999 999 999 999 ...
$ Vir2 : num 999 999 999 999 999 999 999 999 999 999 ...
$ Vir3 : num 40 999 999 999 999 999 999 999 999 999 ...
$ Location : Factor w/ 4 levels "Loc1",..: 4 4 4 4 4 4 2 2 2 2 ...
$ Site : Factor w/ 6 levels "A","B","C",..: 5 5 5 5 5 5 3 3 3 3 ...
$ Date : Date, format: "2010-08-30" "2010-08-30" ...
$ Record : int 35 34 39 49 69 38 145 112 125 140 ...
$ SampleID : Factor w/ 776 levels "AT1-A-F1","AT1-A-F10",..: 525 524 527 528
529 526 111 78
88 110 ...
$ Vir1Inc : logi FALSE FALSE FALSE FALSE FALSE FALSE ...
$ Month :'data.frame': 776 obs. of 2 variables:
..$ Dates: Date, format: "2010-08-30" "2010-08-30" ...
..$ Month: Factor w/ 19 levels "Apr-2011","Aug-2010",..: 2 2 2 2
2 2 18 18 18 18 ...
3 Réponses :
Un exemple pour reproduire l'erreur. Je crée une donnée imbriquée.Frame:
write.table(data.frame(subset(dd,select=-c(Month)),unclass(dd$Month)))
La solution d'Agstudy fournit une excellente solution rapide, mais il y a une solution simple Le bit suivant est juste copié de Solution d'Agstudy pour obtenir les données imbriquées. Code Vous pouvez utiliser 's < Code> LinéarizeStetétée () Code> Fonction (quelle mrDWAB est disponible ici ) pour aplatir ( ou linéariser) les niveaux imbriqués: p> si vous souhaitez modifier ceci (dans ce cas, il semble redondant d'avoir La seule chose qui reste maintenant exporte la seule chose à exporter les données.frame comme d'habitude: p> dd code>: p>
ddf code> est maintenant une donnée.frame sans nidification. Cependant, c'est que les noms de colonne reflètent toujours la structure imbriquée: p>
mois. Code> Écrit avant
dates code>, par exemple) Vous pouvez utiliser
gsub code> et une expression régulière < / a> que j'ai copié de Sacha Epskamp pour supprimer tout texte dans les noms de colonne avant le
. code>. p>
Alternativement, vous pouvez utiliser la fonction "Aplatissée" de l'emballage JSONLITE pour aplatir le DataFrame avant l'exportation. Il atteint le même résultat des autres fonctions mentionnées et est beaucoup plus facile à mettre en œuvre. P>
jsonlite :: aplatissez code> p>
Jsonlite :: Flatten fonctionne vraiment bien pour aplatir une trame de données imbriquée. Mais le lien que vous avez fourni est mort.
Je pense que vous obtenez une erreur parce que vos données.frame contient un nom de données imbriquées. Noms de caractères ...
@Astudy Le fichier d'aide indique
write.table code> peut gérer les fichiers de données imbriqués. Je suppose que quelque chose est encrassé et le code
&& ncol (xj) code> indiqué dans le message d'erreur tente de traiter une non-matrice, donc
ncolxj) code> retourne
Null code> et
r code> déteste "null" dans une opération logique.
Quoi qu'il en soit, le plan d'attaque évident est d'essayer
write.table code> sur une partie de
df code>, après avoir supprimé les éléments "mauvais" candidats et voir quel élément est le coupable.
@Carlwitthoft Vous pouvez voir mon exemple.
Yup - ressemble à la documentation pour
write.table code> est incomplet. Il peut gérer des colonnes qui sont des listes, mais pas des listes imbriquées.
Merci. Votre cadre de données imbriquée et votre déclaration d'erreur est utile .. merci
J'ai rencontré ce problème avec
write.table code> lorsque j'ai créé une trame de données d'une matrice via
as.data.frame code>. Les colonnes sont créées comme des listes de listes d'une seule apparition.