0
votes

Comment cartographier un Dataframe avec une colonne de liste (à mapper) et un identifiant dans R

Je veux faire une carte dans une liste à l'intérieur d'une donnée.frame, lier les lignes et répéter une carte d'identité en une étape.

J'ai pu faire chaque partie manuellement, mais n'a pas pu faire Dans une étape, le processus, s'il y a une fonction ou un moyen spécifique d'utiliser les fonctions de mappage.

en-tête de données: xxx

Structure: > xxx

la façon dont je le fais et que je veux simplifier: xxx

résultat souhaité: xxx

Edit: La colonne mecanicas peut être une liste vide aussi bien, c'est bien structuré.

EDIT2: Ajout de l'un des trottoirs de EDIT1 est vide (erreur dans le boîtier de la solution de Tidyverse). L'autre erreur (solution Data.Table), je n'ai pas pu reproduire sans toutes les données, donc je partage ici via Dropbox Link. https://www.dropbox.com/s/boh8k0epay4gedh/bgg_mechanics. Rdata? Dl = 0


2 commentaires

À l'heure actuelle, il y a 3 réponses postées, toutes que vous avez dit fonctionnent, à l'exception d'une affaire NULL qui n'est pas incluse dans votre échantillon. Pour obtenir une solution plus robuste, vous devrez fournir un échantillon où ces problèmes supplémentaires se produisent


Ok, j'essaie de reproduire toutes les erreurs sans qu'il soit nécessaire de télécharger toutes les données. Vient d'inclure un.


3 Réponses :


2
votes

Vous voulez titeryyr :: irréflutile : xxx


4 commentaires

Obtenu le même problème que ci-dessus, il fonctionne sur les données de l'échantillon, mais lorsque j'inspire de l'erreur en complète, je reçois une erreur: chaque colonne doit être une liste de vecteurs ou une liste de cadres de données [Mecanicas] Toute idée que pourrait-il être?


Ok, j'ai trouvé que c'était à cause des listes vides (pas la même raison lors de l'utilisation de DT), une idée de la solution de contournement? Je regarde à travers ça, je posterai quand je trouve quelque chose


Cette erreur signifie que certains des éléments de votre colonne de liste mecanicas ne sont pas des données de données (ce sont des listes vides). Une solution consisterait à jeter explicitement tous les éléments de mecanicas comme cadres de données: ajoutez la ligne muté (mecanicas = mecanicas%>% carte (données.frame)) dans le tuyau Avant l'appel sur Innest .


Très bien ajout de cela, a également ajouté la liste vide sur les données d'échantillonnage. Il faut juste que ce soit un peu informatique.



2
votes

Avec la table de données Vous pouvez PApply sur Mecanicas par Titre , et il répète le titre pour vous. xxx


2 commentaires

C'est exactement ce que je suis attendu, mais il y a quelque chose de bizarre. Il fonctionne sur les données d'échantillonnage, mais lorsque je vais à l'ensemble, j'obtiens l'erreur suivante: Erreur dans [ [[, "nom"), by = titre): J n'évalue pas le même nombre de colonnes pour chaque groupe aucune idée de quoi pourrait-il être?


Eh bien, je vois qu'entre les lignes 1 et 442, cela fonctionne bien, le 443 ajoute l'erreur, mais si je cours la rangée 443 seule ou avec un couple de plus après cela. J'ai également vérifié la sortie comme vous l'avez suggéré ne semble pas avoir rien d'anormal. Je vais vérifier plus loin et ensuite je réponds.



1
votes

Si je comprends correctement, Data ​​code> consiste en

  • une liste mecanicas code> de cadres de données avec une structure identique (numéro, nom et type de colonnes) et li>
  • un vecteur de caractère titre code> avec le même nombre d'éléments qu'il existe des cadres de données dans mecanicas code> li> ul>

    Une autre approche consiste à utiliser rbindlist () code> pour "aplatir" la structure de données, c'est-à-dire combinez les morceaux en une seule image de données. p> xxx pré>

    library(magrittr)
    # check that number of columns of data frames is consistent
    stopifnot(lengths(data$mecanicas) %>% all(.[1] == .))
    # or, without piping:
    (tmp <- lengths(data$mecanicas))
    stopifnot(all(tmp[1] == tmp))
    # check that number of data frames and titles is consistent
    stopifnot(length(data$mecanicas) == length(data$title))
    


4 commentaires

Désolé, le mecanicas peut également être une liste vide. Si ce n'est pas vide, c'est comme prévu.


Ce cas n'est pas reflété dans votre exemple de jeu de données. Qu'est-ce que titre Afficher dans le cas d'un élément de liste vide dans mecanicas ?


Il a un titre, comme d'autres, Nothings Spécial.


Quoi qu'il en soit, votre méthode fonctionne parfaitement sans la partie MagritTR . Ne peut pas taper pourquoi cependant