Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 用'将NA替换为0;x[is.na(x)]=0';取代整个数据帧,而不仅仅是NAs?_R_Na - Fatal编程技术网

R 用'将NA替换为0;x[is.na(x)]=0';取代整个数据帧,而不仅仅是NAs?

R 用'将NA替换为0;x[is.na(x)]=0';取代整个数据帧,而不仅仅是NAs?,r,na,R,Na,我有点困惑。列表中我的数据帧包含NA值,我希望将其替换为0。 在单个数据帧上,我可以通过df[is.na(df)]=0来轻松实现这一点,并且在单个data.frame上应用时效果很好。 但是,当应用于列表(lappy(l,函数(x)x[is.na(x)]=0))时,这将生成仅包含0的数据帧 虚拟数据: df1<-data.frame(class = rep("BO", 3), a = c(NA,2,3)) df2<-data.frame(class

我有点困惑。列表中我的数据帧包含NA值,我希望将其替换为0。 在单个数据帧上,我可以通过
df[is.na(df)]=0来轻松实现这一点,并且在单个data.frame上应用时效果很好。
但是,当应用于列表(
lappy(l,函数(x)x[is.na(x)]=0)
)时,这将生成仅包含0的数据帧


虚拟数据:

df1<-data.frame(class = rep("BO", 3),
                a = c(NA,2,3))
df2<-data.frame(class = rep("BS", 3),
                a = c(5,NA,7))

l<-list(df1, df2)

# Convert NA to 0
l2<-lapply(l, function(x) x[is.na(x)]=0)
但是我怎么能得到这个

[[1]]
  class  a
1    BO  0
2    BO  2
3    BO  3

[[2]]
  class  a
1    BS  5
2    BS  0
3    BS  7

我们需要返回“x”。这里,我们只返回赋值0。数据集是lambda函数调用的
x

lapply(l, function(x) {x[is.na(x)] <- 0
                       x})
其中
replace

function (x, list, values) {
   x[list] <- values
   x
 }
由于我们仅用0替换缺少的数值列,因此如果

map(l, ~ .x %>%
            mutate_if(is.numeric, replace_na, 0))

我们需要返回“x”。这里,我们只返回赋值0。数据集是lambda函数调用的
x

lapply(l, function(x) {x[is.na(x)] <- 0
                       x})
其中
replace

function (x, list, values) {
   x[list] <- values
   x
 }
由于我们仅用0替换缺少的数值列,因此如果

map(l, ~ .x %>%
            mutate_if(is.numeric, replace_na, 0))

谢谢@akrun,我必须记住这个修复方法这也有效:
lappy(l,函数(x)”[谢谢@akrun,我必须记住这个修复方法这也有效:
lappy(l,函数(x)][