如何将 R 数据帧转换为 name/value 对中的 Json?
How to convert R dataframe to Json in name/value pair?
我有以下 R 数据框:
Values
Type1 123
Type2 4565
Type3 7812
我希望 JSON 输出为
{"Type1":123, "Type2":4565, "Type3":7812}
数字字段可以w/wo引用
我用jsonlite来JSON,输出是:
[{"Values":123,"_row":"Type1"},
{"Values": 4565,"_row":"Type2"},
{"Values": 7812,"_row":"Type3"}]
使用rjson
的解决方案:
df <- data.frame(Values = c(123, 4565, 7812))
rownames(df) <- paste0("Type", 1:3)
library(rjson)
toJSON(setNames(df$Values, rownames(df)))
[1] "{\"Type1\":123,\"Type2\":4565,\"Type3\":7812}"
jsonlite
实际上是在保留您的数据结构,即保留您的 rownames (Type1
, Type2
, Type3
).
无论如何,使用 jsonlite 你可以获得相同的行为:
> jsonlite::toJSON(df %>% t() %>% tibble::as_data_frame())
[{"Type1":123,"Type2":4565,"Type3":7812}]
请注意,使用此解决方案您将丢失原始列名 Values
。如果行名很重要而不是列名,您应该考虑以不同的方式定义数据,因为处理 rownames
可以得到 messy。您可以将类型添加为第二列或转置数据 - 一行,列数与类型一样多。
我有以下 R 数据框:
Values
Type1 123
Type2 4565
Type3 7812
我希望 JSON 输出为
{"Type1":123, "Type2":4565, "Type3":7812}
数字字段可以w/wo引用
我用jsonlite来JSON,输出是:
[{"Values":123,"_row":"Type1"},
{"Values": 4565,"_row":"Type2"},
{"Values": 7812,"_row":"Type3"}]
使用rjson
的解决方案:
df <- data.frame(Values = c(123, 4565, 7812))
rownames(df) <- paste0("Type", 1:3)
library(rjson)
toJSON(setNames(df$Values, rownames(df)))
[1] "{\"Type1\":123,\"Type2\":4565,\"Type3\":7812}"
jsonlite
实际上是在保留您的数据结构,即保留您的 rownames (Type1
, Type2
, Type3
).
无论如何,使用 jsonlite 你可以获得相同的行为:
> jsonlite::toJSON(df %>% t() %>% tibble::as_data_frame())
[{"Type1":123,"Type2":4565,"Type3":7812}]
请注意,使用此解决方案您将丢失原始列名 Values
。如果行名很重要而不是列名,您应该考虑以不同的方式定义数据,因为处理 rownames
可以得到 messy。您可以将类型添加为第二列或转置数据 - 一行,列数与类型一样多。