R 如何在多个列表中替换_na

R 如何在多个列表中替换_na,r,R,我需要在多个列表中将NA替换为FALSE。我可以用最基本的方法来做。这是我到目前为止所拥有的- mydataframe$POBA<-replace_na(mydataframe$POBA,FALSE) mydataframe$POBA2<-replace_na(mydataframe$POBA2,FALSE) mydataframe$POBA3<-replace_na(mydataframe$POBA3,FALSE) mydataframe$POBA我们可以在 library

我需要在多个列表中将NA替换为FALSE。我可以用最基本的方法来做。这是我到目前为止所拥有的-

mydataframe$POBA<-replace_na(mydataframe$POBA,FALSE)
mydataframe$POBA2<-replace_na(mydataframe$POBA2,FALSE)
mydataframe$POBA3<-replace_na(mydataframe$POBA3,FALSE)

mydataframe$POBA我们可以在

library(dplyr)
mydataframe <- mydataframe %>%
                mutate_at(vars(starts_with("POBA)), replace_na, FALSE)

你可以使用apply族来实现这一点

lapply(mydataframe, replace_na, FALSE)
注意:这将改变所有列并返回一个列表对象。如果需要,可以使用
as.data.frame()
将其轻松地再次转换为data.frame

mydataframe <- data.frame(POBA = c(TRUE,TRUE,NA), 
                          POBA2 = c(TRUE, NA, TRUE), 
                          POBA3 = c(NA, TRUE, TRUE))
lapply(mydataframe, tidyr::replace_na, FALSE)
# $POBA
# [1]  TRUE  TRUE FALSE
# 
# $POBA2
# [1]  TRUE FALSE  TRUE
# 
# $POBA3
# [1] FALSE  TRUE  TRUE

mydataframe是否有一种方法可以实现这一点,假设列表具有多种名称(即不仅仅以POBA开头)?@Chris2015您可以在变量中添加感兴趣的列,即
vars(POBA1,POBA2,…)
或作为一个范围(
vars(POBA1:POBA10)
)或作为indexI尝试的lappy(mydataframe,replace\na,FALSE)但出于某种原因,这并没有奏效。
mydataframe <- data.frame(POBA = c(TRUE,TRUE,NA), 
                          POBA2 = c(TRUE, NA, TRUE), 
                          POBA3 = c(NA, TRUE, TRUE))
lapply(mydataframe, tidyr::replace_na, FALSE)
# $POBA
# [1]  TRUE  TRUE FALSE
# 
# $POBA2
# [1]  TRUE FALSE  TRUE
# 
# $POBA3
# [1] FALSE  TRUE  TRUE