Сбор данных в R: получить вложенные списки, удалить список, внести изменения, вернуть их обратно
Следующий код собирает данные с веб-сайта. Я извлекаю список списков, хочу удалить один из списков, отредактировать его, а затем повторно вставить его обратно в данные в форму, в которой они были получены. Вот мой код ниже, он не проходит одно повторное вложение.
library(jsonlite)
library(plyr)
library(ckanr)
library(purrr)
library(dplyr)
ckanr_setup(url = "https://energydata.info/")
package_search(q = 'organization:world-bank-grou')$count
json_data2 <- fromJSON("https://energydata.info/api/3/action/package_search?q=organization:world-bank-grou", flatten = TRUE)
dat2 <- json_data2$result
str(dat2)
###########
#Get the datasets and unlist metadata
###########
df <- as.data.frame(json_data2$result$results)
Tags <- select(df, id, topic)
#Make some edits
Tags$topic <- tolower(Tags$topic)
res <- rbind.fill(lapply(Tags,function(y){as.data.frame(t(y),stringsAsFactors=FALSE)}))
res$V1 = paste0("Some edit:",res$V1)
res$V2 = paste0("Some edits:", res$V2)
res$V3 = paste0("Some edit:", res$V3)
res[res=="Some edit:NA"]<-NA
res$V1 <- gsub(" ", "_", res$V1)
res$V2 <- gsub(" ", "_", res$V2)
res$V3 <- sub(" ", "_", res$V3)
res
###########
#Re-nest
###########
#turning res df back into list of lists
nestedList <- flatten(by_row(res, ..f = function(x) flatten_chr(x), .labels = FALSE)) #FAILS HERE
ОШИБКА: ошибка в flatten(by_row(res, ..f = function(x) flatten_chr(x), .labels = FALSE)): не удалось найти функцию "by_row"
1 ответ
Непонятно из формулировки вопроса, какой именно список списков вы хотите получить, но, возможно, это то, что вы ищете?
res %>%
rowwise() %>%
as.list()
или же
res %>%
t() %>%
as.data.frame() %>%
rowwise() %>%
as.list()