2017-04-08 8 views
1
 email foo bar 
1 [email protected] 23  34 
2 [email protected] 43  34 
3 [email protected] 35  32 

Jetzt möchte ich JSON docs für jede E-Mail, der folgende Formular erstellen:
doc 1: { "email" : "[email protected]"}
doc 2: { "email" : "[email protected]"}
doc 3 : { "email" : "[email protected]"}Wie Spalte eines Datenrahmens im JSON-Format in R konvertieren

Mein endgültiges Ziel ist es, diese Dokumente in MongoDB mit dbInsertDocument() von RMongo einfügen.
Ich spielte mit toJSON(), konnte aber keinen Weg finden. Wie konvertiere ich final$email in JSON-Dokumente wie oben beschrieben?

+0

Können Sie bitte die Antworten unten überprüfen und eine von ihnen akzeptieren, wenn Sie mit ihnen zufrieden sind oder zumindest Ihre Frage klären? – agstudy

Antwort

0

Ich bin mir nicht sicher, ob dies ist, was Sie brauchen: final$email hat nicht Spaltennamen, damit es nicht in der Ausgabe von toJSON(final$email)

library(jsonlite) 

txt <- "email foo bar 
1 [email protected] 23 34 
2 [email protected] 43 34 
3 [email protected] 35 32" 

final <- read.table(text=txt, stringsAsFactors = FALSE) 
toJSON(final$email) 
# [1] "[\"[email protected]\",\"[email protected]\",\"[email protected]\"]"  

# final$email has to be converted to data.frame 
dt <- data.frame(final$email) 
colnames(dt) <- "email" 
toJSON(dt) 
# [{"email":"[email protected]"},{"email":"[email protected]"},{"email":"[email protected]"}] 
0

Ich denke, enthalten ist, sollten Sie zuerst konvertieren Sie Ihre data.frame zu einer Liste von Listen:

## basically you split your data.frame by row 
## for each row you convert it as a list 
LMAo <- unname(lapply(split(dx,seq_len(nrow(dx))), function(x) as.list(x))) 

## auto unboxing to no treat scalar as vector 
jsonlite::toJSON(LMAo,auto_unbox = T) 
[ 
    {"email":"[email protected]","foo":23,"bar":34}, 
    {"email":"[email protected]","foo":43,"bar":34}, 
    {"email":"[email protected]","foo":35,"bar":32} 
] 

## same result using RJSONIO 
cat(RJSONIO::toJSON(LMAo)) 
Verwandte Themen