R 如何替换列表组成的数据框中的所有空值?

R 如何替换列表组成的数据框中的所有空值?,r,json,list,dataframe,R,Json,List,Dataframe,我有数据帧包含列表,而不是由100个JSON文件组成的因素。我需要用0替换所有空值。我怎样才能做到这一点 这是我将100s JSON文件读入R dataframe的脚本,大多数JSON文件有20列,很少有18列[2列不在那里],因此在任何JSON文件中缺少列值的地方,默认情况下,它会为缺少的列创建空值 path<-"mypath" files <- dir(path, pattern = "*.json") mydf <- files %>% map_df(~fromJ

我有数据帧包含列表,而不是由100个JSON文件组成的因素。我需要用0替换所有空值。我怎样才能做到这一点

这是我将100s JSON文件读入R dataframe的脚本,大多数JSON文件有20列,很少有18列[2列不在那里],因此在任何JSON文件中缺少列值的地方,默认情况下,它会为缺少的列创建空值

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

mydf <- files %>%
map_df(~fromJSON(file.path(path, .), flatten = TRUE))
出于生产目的,我的样品df如下所示

mydf<-data.frame(col1=c(NULL,"b"),col2=c("f","j"))
mydf$col1<-as.list(mydf$col1)
mydf$col2<-as.list(mydf$col2)
str(mydf)
我试着做了以下几点,但没有达到预期的效果

mydf[is.null(mydf)] <- 0
尝试将NULL更改为NA,因为NULL通常指的是不存在的内容,而不是缺少的值。希望这仍然是准确的,即使它是从2010年开始的:

首先,按照@PoGibas的建议调整data.frame

mydf<-data.frame(col1=c(NA,"b"),col2=c("f","j"))
mydf$col1<-as.list(mydf$col1)
mydf$col2<-as.list(mydf$col2)
str(mydf)

最后,我找到了如何替换包含列表的数据帧中所有空值的解决方案

A是我的数据框,col1是定义为list的列之一

for(i in 1:length(A$col1))if(is.null(A$col1[[i]]))A$col1[i] = 0 

Yogesh,我认为你没有按照你的意愿定义示例data.frame?空值没有填充,只在col1中出现了两次b?@Yogesh Kumar,将空值更改为NA,以便示例data.frame包含缺少的value@RussThomas:是的,空值没有填充我尝试过,但是在我的原始数据帧中我有空值,所以我尝试创建一个类似的数据帧。我的数据框架也涉及列表,因此发现很难将NULL作为值。。。。我已使用更新了我的查询explanation@ladylala:在我的原始数据框中,我没有空值而不是NAs,请参考我问题中更新的注释。请参考我的注释,当我将JSON文件作为数据框读取时,默认情况下,我在mydf中的几列中得到空值,因此我想将这些空值更改为0。。。我不能将NULL更改为NA,因为在将JSON文件加载到中时,我有一个具有NULL值的数据r@YogeshKumar很抱歉反应太晚。你介意用strmydf的输出更新你的问题吗?我很难生成可复制的示例,因为它似乎与您的描述不一致。谢谢
mydf[is.na(mydf)] <- 0
##   col1 col2
## 1    0    1
## 2    1    2
for(i in 1:length(A$col1))if(is.null(A$col1[[i]]))A$col1[i] = 0