R 用'将NA替换为0;x[is.na(x)]=0';取代整个数据帧,而不仅仅是NAs?
我有点困惑。列表中我的数据帧包含NA值,我希望将其替换为0。 在单个数据帧上,我可以通过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
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)][