R json中缺少项时返回NA

R json中缺少项时返回NA,r,list,jsonlite,R,List,Jsonlite,我在一个迭代多个JSON的函数中有如下代码: my_tibble <- tibble(col_a = json$xyz$xyz, col_b = json$xyz2$xyz2, col_c = json$xyz3, ...) my_tible一个选项是将缺少的值更改为NA,作为json本身的一部分,然后创建tible。下面的解决方案适用于我的玩具列表 library(tidyverse) #First find max length in items of json max_length

我在一个迭代多个JSON的函数中有如下代码:

my_tibble <- tibble(col_a = json$xyz$xyz,
col_b = json$xyz2$xyz2,
col_c = json$xyz3,
...)

my_tible一个选项是将缺少的值更改为
NA
,作为
json
本身的一部分,然后创建
tible
。下面的解决方案适用于我的
玩具
列表

library(tidyverse)
#First find max length in items of json
max_length <- max(sapply(json,length))

#Set length of each items so that `NA` is included 
json<- lapply(json, function(x){
  length(x)<-max_length
  x
  })

#Now cerate tibble
my_tibble <- tibble(col_a = json$xyz$xyz,
                    col_b = json$xyz2$xyz2,
                    col_c = json$xyz3)
库(tidyverse)
#首先查找json项中的最大长度

max_length好的,我找到了解决问题的方法,这可能不是最优雅的解决方案,但至少很容易实现:

NAfy <- function(x){
  if_else(is.null(x), NA, x)
}

my_tibble <- tibble(col_a = NAfy(json$xyz$xyz),
                    col_b = NAfy(json$xyz2$xyz2),
                    col_c = NAfy(json$xyz3))

n如果我喜欢您的解决方案,那么我正在迭代的JSON有可能对我不使用的元素没有相同的结构。我宁愿在这里表演泰伯舞曲。@MattnDo好的。即使在这些情况下,也可以找到解决方案。如果您可以共享
sample
结构您希望解决方案工作的
json
,这会更好。