我有一个data.table,并希望删除所有列 满足一些条件,我尝试使用set循环遍历所有列,但没有设法得到结果。小例子如下。这里应删除第三栏。
library(data.table)
data<-data.table(x=c("25&&&35&&1","&&&&","&&&&"),
y=c("1","1","1"),
z=c("&&&&&","","&"))
function_length_non_missing<-function(x){
x<-x[!is.na(x)]
x<-gsub("&|FIELD_NOT_FOUND","",x)
x<-gsub("\\s","",x)
sum(x!="")
}
for (col in names(data)) (set(data,j=col,value=ifelse(function_length_non_missing(data[[col]])==0,NULL,data[[col]])))
在此示例中,它将删除列z:
data<-data[,z:NULL]
x y
1: 25&&&35&&1 1
2: &&&& 1
3: &&&& 1