Посмотрел эту функцию, она не принимает вектор. Либо ищите аналог ф-ии с векторизацией, либо цикл.
Еще (минорно), вы используете DT, но пишите как на датафреймах ) Конечно, дело хозяйское, но DT сделан изначально, чтобы делать всяческие операции внутри синтаксиса, такие как у вас:
library(jsonlite)
library(data.table)
ddt <- data.table(web = c('{"city" : "Zurich"}', '{"city" : "Moscow"}'))
ddt[, output := jsonlite::fromJSON(web), 1:nrow(ddt)]
в продолжении темы векторизации json. Столкнулся не так давно с подобной задачей:
Есть таблица, которая приходит в .csv, в одном из её столбцов упакованный json. Что-то вроде этого:
df <- data.frame(name = c("some_text"),
txt = c("[{'name': 'Resistance', 'value': '0 Ohms', 'unit': '', 'gold': 'true'},{'name': 'Power', 'value': '0.063W, 1/16W', 'unit': '', 'gold': 'true'}]"))
Задача собственно в том, чтобы распарсить упакованный json.
jsonlite::validate(df$txt)
Есть ли векторизованные функции чтения подобных json?
Лучшее что я смог придумать, это заменять все одинарные кавычки на экранированные двойные.
Но может есть способ лучше?
library(tidyverse)
df[1,2] %>% str_replace_all("'", "\"") %>% jsonlite::fromJSON()