我的文件存在一些导入问题,该问题最终在末尾创建了一个空列:
library(data.table)
library(tidyverse)
MWE <- data.table(var1=c(1,2),var2=c(3,4),var3=c(NA,NA))
现在,我可以轻松删除它,因为我知道空列是最后一个:
MWE2 <- MWE[,c(length(MWE)):=NULL]
但是我想知道如果我只想删除一个随机的空列而不知道其编号怎么办。在此处和数据表页面上的快速搜索为我提供了许多有关如何进行以下操作的示例:
na.omit
但是我没有找到删除数据表中空列的解决方案。有哪些选择,哪些是最快的?
我们可以检查all
值是否NA
在列中,获取列名并将其分配给NULL
nm1 <- MWE[, names(which(sapply(.SD, function(x) all(is.na(x)))))]
# or
# nm1 <- MWE[, names(which(!colSums(!is.na(.SD))))]
MWE[, (nm1) := NULL]
或搭配 Filter
MWE[, Filter(function(x) any(!is.na(x)), .SD)]
或使用 select
library(dplyr)
MWE %>%
select(where(~ any(!is.na(.))))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句