使用 Purrr 附加到文件

Using Purrr to append to files

我想使用 purrr::map() 将一个新列附加到 json 个文件的列表中,其中包含 table 并使用 id 变量作为标识符。

我是这样阅读文件的:

path <- "my_path"
files <- dir(path, pattern = "*.json")

data <- files %>%
        map(~fromJSON(file.path(path, .), flatten = TRUE)

data <- data %>%
     mutate(new_var = //do something//)

然后,我想使用 purrr map 类型的方法将这个新变量附加到具有 id 变量的 json 文件列表中。

有办法吗?

你快到了。

您的 "add" 新变量也需要使用 map 完成,因为您的数据可能是数据帧列表。

library(tidyverse)
library(jsonlite)

json <-
  '[
  {"Name" : "Mario", "Age" : 32, "Occupation" : "Plumber"}, 
  {"Name" : "Peach", "Age" : 21, "Occupation" : "Princess"},
  {},
  {"Name" : "Bowser", "Occupation" : "Koopa"}
]'


json2 <-
  '[
  {"Name" : "Luigi", "Age" : 31, "Occupation" : "Plumber"}, 
  {"Name" : "Toad", "Age" : 32, "Occupation" : "Majordomo"},
  {},
  {"Name" : "Koopa", "Occupation" : "Henchman"}
]'


list(json, json2) %>% 
  map(~fromJSON(.x)) %>% 
  map(~mutate(.x, Game = "Super Mario Bros")) 

[[1]]
    Name Age Occupation             Game
1  Mario  32    Plumber Super Mario Bros
2  Peach  21   Princess Super Mario Bros
3   <NA>  NA       <NA> Super Mario Bros
4 Bowser  NA      Koopa Super Mario Bros

[[2]]
   Name Age Occupation             Game
1 Luigi  31    Plumber Super Mario Bros
2  Toad  32  Majordomo Super Mario Bros
3  <NA>  NA       <NA> Super Mario Bros
4 Koopa  NA   Henchman Super Mario Bros

如果您的 json 更复杂,我建议阅读 jsonlite 的小插图并阅读 this post