2016-04-08 17 views
1

Ich möchte einige Spalten meines Datenrahmens in einem bestimmten Format (JavaScript-Format) speichern. Ich habe versucht, toJSON() aus dem rjson-Paket zu verwenden, aber das funktioniert nicht.Convert R data.frame in Javascript array

Mein Ergebnis sollte wie folgt aussieht: http://leaflet.github.io/Leaflet.markercluster/example/realworld.388.js

bitte helfen, und Dank im Voraus.

+1

Zeigen Sie Ihren Code - was Sie versucht haben, und ein Beispiel der Daten, bitte. Und erklären Sie, was Sie meinen, wenn Sie sagen, dass das rjson-Paket "nicht funktioniert". – WillardSolutions

Antwort

1

Der schnellste Weg, es zu tun ist eine der apply Funktionen zu verwenden. Es passiert einfach, dass die beste, die ich fand, apply selbst war.

# this will go row by row 
apply(allTheData, 1, function(x){ 
    print(x["COL_NAME"]) 
}) 

Sie nicht x$COL_NAME in anwenden, so müssen Sie die Art, wie ich oben tat verwenden können.

Sie könnten andere apply Funktionen verwenden, aber Zeile für Zeile zu gehen fand ich diese am einfachsten anzuwenden.

1

mit dem folgende Skript gelöst:

datasetres <- idw.output[,1:3] 
write("var addressPoints = [",file="Data/output.txt") 
for(i in 1:nrow(datasetres)){ 
    write(paste("[",datasetres[i,]$lat,",", datasetres[i,]$lon,", \"", datasetres[i,]$var1.pred, "\" ],",sep=''),file="Data/output.txt",append=TRUE) 
} 
write("];",file="Data/output.txt",append = TRUE) 
4

I jsonlite Paket mit dem ehrfürchtigen und performant vorzuschlagen, die in JSON-R und R-JSON Konvertierung spezialisiert:

# load package 
library(jsonlite) 

# get help 
?toJSON 

# do transformations 
df <- data.frame(a=1:3, b=letters[1:3]) 

toJSON(df) 
## [{"a":1,"b":"a"},{"a":2,"b":"b"},{"a":3,"b":"c"}] 

toJSON(df, dataframe="rows") 
## [{"a":1,"b":"a"},{"a":2,"b":"b"},{"a":3,"b":"c"}] 

toJSON(df, dataframe="columns") 
## {"a":[1,2,3],"b":["a","b","c"]} 

toJSON(df, dataframe="values") 
## [[1,"a"],[2,"b"],[3,"c"]] 

PS .: Die toJSON() hat weitere Argumente zum Steuern und Feinabstimmen der Konvertierung.