2017-09-27 49 views
0

我需要從R(使用jsonlite)中的數據幀中導出json。一切都好,除了一件事。我有一個字符串列在細胞是這樣的:將數據幀中的字符串拆分爲R中的json數組

"one,two,three" 

所以經過:

sink("out.json") 
cat(toJSON(DF, pretty = TRUE)) 
sink() 

的Json如下:

{..."data" : "one,two,three"...} 

我想數組:

{..."data" : ["one","two","three"]...} 

我試着strsplit覆蓋單元格並用單元格替換值json,但它不起作用。

strsplit: 
================== 
Warning message: 
In `[<-.data.frame`(`*tmp*`, 16, 5, value = list(c("one", : 
replacement element 1 has 3 rows to replace 1 rows 

strplit and toJSON for cell: 
================== 
[1] "[\"one\",\"two\",\"three\"]" 

有人可以幫助我嗎?謝謝!

回答

0

您可以將列更改爲列表而不是字符向量。

library('jsonlite') 
library('tidyverse') 

df <- tribble(
    ~column1, ~data, 
    1,  'one,two,three', 
    2,  'four,five' 
) 

df <- df %>% 
    mutate(data = stringr::str_split(data, ',')) 

toJSON(df, pretty = T) 
# [ 
# { 
#  "a": 1, 
#  "data": ["one", "two", "three"] 
# }, 
# { 
#  "a": 2, 
#  "data": ["four", "five"] 
# } 
# ] 
+0

我不明白「tidyverse」(太大的包裝)「tribble」,但我理解你的信息。謝謝。對我來說,工作如下:'df $ data < - as.list(strsplit(df $ data,「,」))' –