我有一个名为test
的JSON字符串,其中某些元素包含多个键(例如foo和bar)。
我的目标是仅提取foo
的值。用R如何做到这一点?
我曾尝试同时转换为矩阵和data.frame,但这无助于解决问题。
> test
[1] "{\"foo\":[1,2,3],\"bar\":[0]}" "{\"foo\":[1]}" "{\"foo\":[4], \"bar\":[1]}"
[4] "{\"foo\":[2]}" "{\"foo\":[1,2]}" "{\"foo\":[3]}"
任何帮助将不胜感激
dput(test)
c("{\"foo\":[1,2,3],\"bar\":[0]}", "{\"foo\":[1]}", "{\"foo\":[4], \"bar\":[1]}",
"{\"foo\":[2]}", "{\"foo\":[1,2]}", "{\"foo\":[3]}")
答案 0 :(得分:0)
我们可以使用fromJSON
转换为data.frame,然后提取foo
列,即list
列
library(jsonlite)
lapply(paste0("[", test, "]"), function(x) unlist(fromJSON(x)$foo))
或将元素paste
放入单个字符串,然后执行fromJSON
fromJSON(paste0("[", paste(test, collapse=","), "]"))$foo
#[[1]]
#[1] 1 2 3
#[[2]]
#[1] 1
#[[3]]
#[1] 4
#[[4]]
#[1] 2
#[[5]]
#[1] 1 2
#[[6]]
#[1] 3
或使用tidyverse
library(tidyverse)
str_c(test, collapse=",") %>%
str_c("[", ., "]") %>%
fromJSON %>%
pull(foo)