2017-08-18 2 views
0

Ich versuche, einen Leaflet-Code, den ich vor sechs Monaten verwendet habe, erneut zu verwenden, womit ich kein Problem hatte damals. Seitdem habe ich Leaflet nicht mehr benutzt und kann nun keine Karten mehr erzeugen, wie ich es vorher war.R - Leaflet Code "Fehler in muate_impl (.data, dots): Objekt 'address.lon' nicht gefunden"

Einfach gesagt, nach dem Austauschen der Variablen in der gleichen Weise, die ich für viele andere Karten vor 6 Monaten habe, erhalte ich die folgende Fehlermeldung und bin mir nicht sicher, wie man es beheben kann: Fehler in muate_impl (.data, Punkte): Objekt 'address.lon' nicht gefunden

Ich habe die entsprechenden Pakete und Datenformate geladen. Die grundlegende Fehlerbehebung wurde behoben. Wie behebe ich das?

Der kontextuellen Code ist der folgende:

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) 

Bin ich die Funktion des address.lon Mißverständnis? Ich entschuldige mich, wenn mein mangelndes Verständnis für die Codierung mich daran hindert, eine einfache Lösung zu finden, ich habe mit diesem Code seit einiger Zeit nicht mehr interagiert. Ich schätze jede Hilfe, die ich erhalten kann.

+3

Sind Sie sicher, dass "address.lon" eine Spalte in Ihrem Datensatz ist? Es scheint nicht von Ihrem Kommentar zu stammen. Nicht sicher, was Sie in diesem 'muate()' erreichen wollten. Es ist einfacher, Ihnen zu helfen, wenn Sie ein [reproduzierbares Beispiel] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) mit einer Beispieleingabe bereitstellen, damit wir es ausführen können Testen Sie den Code selbst. – MrFlick

+1

Überprüfen Sie, dass 'address.lon' eine Spalte in Ihrem' df' ist - überprüfen Sie einfach, dass dies der richtige Name in der CSV ist, in der Sie gerade lesen. Anderenfalls ändern Sie den Namen in den richtigen Namen. – meenaparam

+0

Vielen Dank für das Feedback Ihrer Kollegen. Das war hilfreich. Ich habe eine Antwort an @sconfluentus gegeben, wenn Sie interessiert sind, wohin das gegangen ist. –

Antwort

2

Ihr Skript schlägt fehl, weil Ihre address.lon in der ifelse-Anweisung auf nichts in Ihrer offensichtlichen lokalen Umgebung basierend auf dem Code verweist.

Es ist nicht in Paket oder "rgdal" oder, Sie haben es nicht selbst als eine Funktion definiert und ich kann nicht sehen, wo Sie Zugriff darauf geladen haben, bevor Sie es aufrufen.

Es ist auch, keine andere Spalte in Ihrem Datenrahmen. Also, R hat keinen Ort, an dem man es aus seinem Code herausholen kann.

Es ist meine Vermutung, dass Ihr früheres Flugblattprojekt mehr vorhergehenden Code hatte und address.lon darin definiert wurde.

Wenn Sie den gesamten Code in einer Bearbeitung veröffentlichen oder in einer Datei irgendwo in der Wildnis verlinken, könnte einer von uns Ihnen wahrscheinlich helfen, herauszufinden, was address.lon tut und wie Sie es bekommen Arbeiten in diesem Mapping-Skript.

+0

Ich habe address.lon entfernt. Ich habe den Fehler erkannt, als du es erwähnt hast. Ich habe Änderungen aufgrund Ihres Feedbacks vorgenommen, einschließlich des Hinzufügens des data.frame-Formats. Ich habe jetzt einen anderen Fehler mit meinem obigen Code, der ähnlich ist. Ich erhalte eine Fehlermeldung, die besagt: Fehler in as.character (x): kann Typ 'Schließung' zu Vektor vom Typ 'Zeichen' nicht erzwingen Zusätzlich: Warnmeldungen: 1: In validateCoords (Lng, Lat, FuncName): Die Daten enthalten 1 Zeile mit fehlenden oder ungültigen Breiten-/Längenwerten und werden ignoriert 2: In is.na (x): is.na() angewendet auf non (Liste oder Vektor) vom Typ 'closure' –

+1

run the Funktion 'str (df)' auf Ihrem Datenrahmen und es wird mir wahrscheinlich die Hinweise geben, die ich brauche, um dieses Problem zu beheben.Meine Vermutung ist, dass Ihre Breitengrad-Variablen als Zeichen anstelle von numerischen Daten eingehen. – sconfluentus

+0

Hey @sconfluentus, ich lief str aber ohne Erfolg. Die Fehlermeldung ist immer noch: Fehler in as.character (x): kann nicht Typ 'Schließung' zu Vektor vom Typ 'Zeichen' Zusätzlich dazu: Warnmeldungen: 1: In is.na (x): is.na() angewendet auf non (Liste oder Vektor) vom Typ 'closure' 2: In is.na (x): is.na() angewendet auf non (Liste oder Vektor) vom Typ 'closure' Ich auch ran sapply (df $ latitude, Klasse) überprüft, dass es tatsächlich numerisch ist. Also, keine Veränderung. Hast du auch die Änderungen gesehen, die ich aus deinen Vorschlägen gemacht habe? Ich gebe eine kleine Liste von DF-Variablen. Gedanken? –

Verwandte Themen