[英]What is the most efficient way to remove empty columns in a datatable in R
我有一個文件的導入問題,在最后創建一個空列,例如:
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(.))))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.