第一次海報,很久以前的潛伏者。要溫柔。中等R用戶。我相信有一種更好的,功能性的方式來做我所需要的,但感覺就像我研究過沒有洞察力的死亡。如何將數據合併到R中預先存在的JSON結構中?
我想合併一個數據集到一個預先存在的JSON結構。每個JSON結構對於許多序列化的JSON請求都有一行記錄。
我加載數據集是13個變量的數據並更改列標題,以匹配他們是如何出現在JSON結構
library(jsonlite)
#### Map Column headers to their respective names in the JSON Structure
colnames(data) <- c("default.A",
"default.B",
"default.C",
"items.A",
"items.B.1",
"items.B.2",
"items.B.3",
"items.B.4",
)
創建空白JSON結構。這是需要處理JSON請求的格式。簡單的嵌套結構。
sample <- '{
"default": {
"A": "",
"B": "",
"C": "",
},
"items": [{
"A": "",
"B": {
"1": "",
"2": "",
"3": "",
"4": "",
}
}]
}'
jsonstructure <- fromJSON(sample)
將所有東西都設置爲DF。合併它們。填補空白
x <- as.data.frame(data)
y <- as.data.frame(jsonstructure)
Z <- merge(x, y, all = TRUE)
Z[is.na(Z)] <- ""
的NA轉換成JSON
jsonZ <- toJSON(unname(split(Z, 1:nrow(Z))), pretty=TRUE)
cat(jsonZ)
電流輸出不匹配
[
[
{
"default.A": "",
"default.B": "1234567890",
"default.C": "",
"items.A": "1234567890",
"items.B.1": "1234",
"items.B.2": "1234",
"items.B.3": "1234",
"items.B.4": "1234",
}
],
[
{
"default.A": "",
"default.B": "0987654321",
"default.C": "",
"items.A": "0987654321",
"items.B.1": "4321",
"items.B.2": "4321",
"items.B.3": "4321",
"items.B.4": "4321",
}
]
]
順便說一句:我沒有做NA處理,但我想你可以自己弄清楚。 ;) – cryo111
我一直在嘗試這個,但碰到一些問題。 在運行您的循環時,我收到: '1:nrow(data):參數長度爲0的錯誤' 我可以直接從您的帖子中複製代碼。 最後,查看最終輸出(並從我的結尾也可以重現),我發現由於某種原因,被填充到JSON結構中的數據有時會引用NA值而不是剩餘值。 – p0wd3rd
廣告錯誤)您尚未指定'data',但我假定這是一個'data.frame',其中每行必須轉換爲'JSON'對象。如果是這種情況,那麼您報告的錯誤不應顯示出來。 )我不知道你的實際輸入是如何格式化的,但是你可能會更接近你想用'jsonstructure [[mapping [[i]]]] -
cryo111