1

のような2つのデータフレームを持つ

final_data2:

      id type lang div
1   hola page   es   1

およびパス:

  source target count
1   hola  adios     1

jsonlite次のコードを使用して、同じ JSON で両方のデータフレームを組み合わせることができます。

cat(toJSON(c(apply(final_data2,1,function(x)list(id = unname(x[1]), 
type = unname(x[2]), lang = unname(x[3]), div = unname(x[4]))),
apply(paths,1,function(x)list(source = unname(x[1]), target = unname(x[2]),
playcount = unname(x[3])))), pretty = TRUE))

結果は、次のような配列のセットです。

[
  {
    "id": ["hola"],
    "type": ["page"],
    "lang": ["es"],
    "div": ["1"]
  },
  {
    "source": ["hola"],
    "target": ["adios"],
    "playcount": ["1"]
  }
]

ただし、生成されたオブジェクトには 2 つの名前 (nodeslinks) が含まれ、それぞれが以前に定義されたデータフレームの 1 つをネストする必要があります。したがって、構造は次のようになります。

{
  "nodes": [
    {
        "id": ["hola"],
        "type": ["page"],
        "lang": ["es"],
        "div": ["1"]
    }
  ],
  "links": [
    {
        "source": ["hola"],
        "target": ["adios"],
        "playcount": ["1"]
    }
  ]
}

それを達成する方法に関するヒントはありますか?

4

1 に答える 1

1

data.frames を名前付きリストとして に渡すだけtoJSONです。

library(jsonlite)

df1 <- read.table(textConnection("      id type lang div
1   hola page   es   1"), header = T)
df2 <- read.table(textConnection("  source target count
1   hola  adios     1"), header = T)


toJSON(list(nodes = df1, links = df2), pretty = T)
# {
# "nodes": [
#   {
#     "id": "hola",
#     "type": "page",
#     "lang": "es",
#     "div": 1
#   }
#   ],
# "links": [
#   {
#     "source": "hola",
#     "target": "adios",
#     "count": 1
#   }
#   ]
# } 
于 2016-02-17T21:30:51.940 に答える