我有X
至X.61
行。在数据表Df
中。我想让R用NA
删除所有列。
我使用了下面的代码,效果很好。
Df <- Df[, which(unlist(lapply(Df, function(x)!all(is.na(x))))),with=F]
现在,我希望做同样的事情,但是希望保留列X.52
,即使所有值都是NA
。我该怎么办?
答案 0 :(得分:0)
很难说,但请尝试以下操作:
ids = apply(Df,2,function(x){print(x);return (NA %in% x);});
`Df[,-setdiff(ids,52)]
答案 1 :(得分:0)
以下代码将保留选定的列,即使其所有值均为NA
。
我将组成一个data.frame,而不是X.52
选择列名V3
。您要做的就是修改代码。
Df <- matrix(1:24, nrow = 4)
Df[, 2:4] <- NA
Df <- as.data.frame(Df)
inx1 <- which(names(Df) %in% "V3")
inx2 <- which(sapply(Df, function(x) !all(is.na(x))))
Df <- Df[, sort(c(inx1, inx2))]
Df
# V1 V3 V5 V6
#1 1 NA 17 21
#2 2 NA 18 22
#3 3 NA 19 23
#4 4 NA 20 24
答案 2 :(得分:0)
您可以使用“&”将其添加为which
函数中的另一个条件:
Df <- Df[, which(unlist(lapply(Df, function(x)!all(is.na(x))))&colnames(Df)!="X.52"),with=F]