2017-08-18 2 views
0

J'essaie de me réapproprier un code de dépliant que j'ai utilisé il y a six mois, avec lequel je n'ai eu aucun problème à l'époque. Je n'ai plus utilisé Leaflet depuis et je ne suis plus capable de générer des cartes comme je l'étais auparavant. Tout simplement, après avoir changé les variables de la même manière que pour de nombreuses autres cartes il y a 6 mois, je reçois le message d'erreur suivant et je ne suis pas sûr de savoir comment le réparer: Erreur dans mutate_impl (.data, points): objet 'adresse.lon' non trouvéR - Leaflet Code "Erreur dans mutate_impl (.data, dots): objet 'address.lon' non trouvé"

J'ai chargé les paquets et les formats de données appropriés. Le dépannage de base a été résolu. Comment puis-je réparer ça?

Le code contextuel est la suivante:

Example Data 
org dept address latitude longitude 
ABC, Inc., SPSG, 111111 North Whatever Houston, TX 77058, 29.5431888, -95.1023828 
DEF, Inc., Security Systems, 111 North Sepulveda boulevard 2000 El Segundo, CA 90245, 42.6379953, -71.2459721 


df %>% 
mutate(popup_info=paste(sep = "<br/>", paste0("<b>","<i>", org,"<i>", "</b>"), dept)) %>% 
filter(!is.na(longitude) & !grepl("CLOSED", org)) %>% 
filter(!is.na(latitude) & !grepl("CLOSED", org)) -> df1 

## Plot the Maps 
# Client Map 
orgpal <- colorFactor(plasma(7), df1$org) 
leaflet(df1) %>% 
addProviderTiles("CartoDB.Positron") %>% 
addCircleMarkers(lng = ~longitude, 
       lat = ~latitude, 
       radius = 2.5, 
       fillColor = ~orgpal(orgpal), 
       stroke=FALSE, 
       fillOpacity = 1, 
       popup = ~popup_info) %>% 
addLegend("bottomright", pal = orgpal, values = ~org, labels = "Organization", title = "Client Locations") %>% 
addMiniMap(tiles = providers$CartoDB.PositronNoLabels, width = 120, height=80) 

que je comprends mal la fonction de address.lon? Je m'excuse si mon manque de compréhension du codage m'empêche de voir une solution facile, je n'ai tout simplement pas interagi avec ce code depuis un moment. J'apprécie toute aide que je peux recevoir.

+3

Êtes-vous sûr que 'address.lon' est une colonne de votre jeu de données? Cela ne semble pas provenir de votre commentaire. Je ne suis pas sûr de ce que vous essayiez d'accomplir dans ce 'mutate()'. Il est plus facile de vous aider si vous fournissez un [exemple reproductible] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) avec un exemple d'entrée pour que nous puissions courir et Testez le code nous-mêmes. – MrFlick

+1

Revérifiez que 'address.lon' est une colonne dans votre' df' - vérifiez simplement que c'est le bon nom dans le fichier csv que vous lisez. Sinon, changez-le en quel que soit le nom correct. – meenaparam

+0

Merci pour les commentaires de vos gars. C'était utile. J'ai donné une réponse à @sconfluentus, si vous êtes intéressé à voir où cela s'est passé. –

Répondre

2

Votre script échoue car votre address.lon dans l'instruction ifelse ne fait référence à rien dans votre environnement local évident en fonction du code inclus.

Il n'est pas dans le paquet "sp" ou "rgdal" ou "leaflet", vous-même avez pas défini en fonction et je ne vois pas où vous avez chargé l'accès à ce avant de l'appeler.

C'est aussi, PAS une autre colonne dans votre trame de données. Donc, R n'a nulle part où puiser cela quand il l'atteint dans votre code.

Je suppose que votre projet de prospectus antérieur avait plus de code précédent que celui-ci et address.lon y était défini.

Si vous publiez tout ce code dans un montage, ou un lien dans un fichier quelque part dans les joutes du web, l'un d'entre nous pourrait probablement vous aider à comprendre à la fois ce que fait , et comment l'obtenir travailler dans ce script de cartographie.

+0

J'ai supprimé address.lon. J'ai reconnu l'erreur quand vous l'avez mentionné. J'ai fait des modifications ci-dessus en raison de vos commentaires, y compris l'ajout du format data.frame. J'ai maintenant une erreur différente avec mon code ci-dessus qui est similaire. Je reçois un message d'erreur disant: Erreur dans as.character (x): impossible de forcer le type 'closure' à vector de type 'character' En outre: Messages d'avertissement: 1: Dans validateCoords (lng, lat, funcName): Les données contiennent 1 lignes avec des valeurs lat/lon manquantes ou invalides et seront ignorées. 2: Dans is.na (x): is.na() appliqué à non (liste ou vecteur) de type 'fermeture' –

+1

Exécuter le Fonction 'str (df)' sur votre trame de données et il me donnera probablement les indices dont j'ai besoin pour résoudre ce problème.Ma conjecture est que vos variables lat lon viennent en tant que caractère au lieu de données numériques. – sconfluentus

+0

Hey @sconfluentus, j'ai couru str mais sans effet. Le message d'erreur est encore: Erreur dans as.character (x): ne peut pas forcer le type 'closure' à un vecteur de type 'character' En outre: Messages d'avertissement: 1: In is.na (x): is.na() appliqué à non (liste ou vecteur) de type 'fermeture' 2: Dans is.na (x): is.na() appliqué à non (liste ou vecteur) de type 'fermeture' J'ai aussi a couru sapply (df $ latitude, class) en vérifiant qu'il est en effet numérique. Donc, pas de changement. Aussi, avez-vous vu les modifications que j'ai faites à partir de vos suggestions? Je fournis une petite liste de variables df. Pensées? –