我有一个类似于this one的问题,但我的数据集更大:50列,其中1列为UID,其他列带有TRUE
或NA
,我想将所有NA
更改为FALSE
,但是我不想使用显式循环。plyr
可以解决问题吗?谢谢。
更新1
感谢您的快速回复,但是如果我的数据集如下所示,该怎么办:
df <- data.frame(
id = c(rep(1:19),NA),
x1 = sample(c(NA,TRUE), 20, replace = TRUE),
x2 = sample(c(NA,TRUE), 20, replace = TRUE)
)
我只希望处理X1
和X2
,该怎么办?
最佳答案
如果要替换变量的子集,仍然可以使用is.na(*) <-
技巧,如下所示:
df[c("x1", "x2")][is.na(df[c("x1", "x2")])] <- FALSE
IMO使用临时变量使逻辑更易于遵循:
vars.to.replace <- c("x1", "x2")
df2 <- df[vars.to.replace]
df2[is.na(df2)] <- FALSE
df[vars.to.replace] <- df2
关于r - 将R中选定列中的所有NA替换为FALSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7279089/