2017-01-18 10 views
1

で生成:追加行は、私は例えばR.でJSONファイルを生成したいR

forJson <- data.frame(names = c("John", "Mary", "Pat", "Rick"), values = 3:6) 
library("jsonlite") 
toJson <- toJSON(forJson, pretty = TRUE) 
toJson 

しかし、私は、このファイルにいくつかの情報を追加するために必要なのです。最終的には次のようになります:

[ 
"CaseID": 12345, 
"graph": "Name-of-the-graph", 
"Items":[{ 

    { 
    "names": "John", 
    "values": 3 
    }, 
    { 
    "names": "Mary", 
    "values": 4 
    }, 
    { 
    "names": "Pat", 
    "values": 5 
    }, 
    { 
    "names": "Rick", 
    "values": 6 
    }] 
] 

私はJSONに全く経験がありません。テーブルの私の現在の値が "Items"というオブジェクトの内部にあるように感じます。そして、私は2つのメタ情報(ケースIDとグラフ名)を上部に持っていなければなりません。 どのように私はそのような行を追加するか、toJSONを使用してそれらを生成するためのアドバイス?

ありがとうございます!

答えて

1

リストにあなたのデータを入れ、その後、若干の変動は、全体的なdata.frame

forJson <- data.frame(CaseID = 1234, graph = "name_of_graph") 
forJson$Items <- list(data.frame(names = c("John", "Mary", "Pat", "Rick"), 
           values = 3:6)) 

toJSON(forJson, pretty = T) 

# [ 
# { 
#  "CaseID": 1234, 
#  "graph": "name_of_graph", 
#  "Items": [ 
#   { 
#    "names": "John", 
#    "values": 3 
#   }, 
#   { 
#    "names": "Mary", 
#    "values": 4 
#   }, 
#   { 
#    "names": "Pat", 
#    "values": 5 
#   }, 
#   { 
#    "names": "Rick", 
#    "values": 6 
#   } 
#   ] 
# } 
# ] 

list列内data.frameを持つことであるJSON

forJson <- list(CaseID = 1234, graph = "name-of-the-graph", Items = forJson) 
toJSON(forJson, pretty = T) 
# 
# { 
# "CaseID": [1234], 
# "graph": ["name-of-the-graph"], 
# "Items": [ 
#  { 
#   "names": "John", 
#   "values": 3 
#  }, 
#  { 
#   "names": "Mary", 
#   "values": 4 
#  }, 
#  { 
#   "names": "Pat", 
#   "values": 5 
#  }, 
#  { 
#   "names": "Rick", 
#   "values": 6 
#  } 
#  ] 
# } 

に変換必要なR構造を簡単に作成するには、fromJSON()を使用してJSONから後方に作業する必要があります。これはautomatica LLY、

js <- '{ 
     "CaseID": 1234, 
     "graph": "name_of_graph", 
     "Items": [ 
      { 
       "names": "John", 
       "values": 3 
      }, 
      { 
       "names": "Mary", 
       "values": 4 
      }, 
      { 
       "names": "Pat", 
       "values": 5 
      }, 
      { 
       "names": "Rick", 
       "values": 6 
      } 
      ] 
    }' 

lst <- jsonlite::fromJSON(js) 
lst 
$CaseID 
[1] 1234 

$graph 
[1] "name_of_graph" 

$Items 
    names values 
1 John  3 
2 Mary  4 
3 Pat  5 
4 Rick  6 

しかし、あなたにR構造を与えるにもかかわらずfromJSON()toJSON()が自動的に配列要素にそれらを行い、CaseIDと単一要素としての値を読み込むことに注意してください(実際には、私はこれを見ることができません問題である)。

toJSON(lst, pretty = T) 
{ 
    "CaseID": [1234], 
    "graph": ["name_of_graph"], 
    "Items": [ 
    { 
     "names": "John", 
     "values": 3 
    }, 
    ... etc 
+0

完璧なソリューション - これは大変ありがとうございます! – user3245256

+0

@ user3245256ようこそ。私はあなたが望んだ正確なフォーマットがわからないので、2つのオプションを与えました。最初のオブジェクトには各オブジェクトの配列があり、2番目のオブジェクトには 'CaseID'と' graph'のオブジェクトがあり、 'Items'には配列 – SymbolixAU

+0

の配列があります。非常に最後の[と]? – user3245256

関連する問題