R data.table,选择没有 NA 的列

Ste*_*eve 6 r data.table

我这里有一张股票价格表:

https://drive.google.com/file/d/1S666wiCzf-8MfgugN3IZOqCiM7tNPFh9/view?usp=sharing

有些列有 NA,因为该公司不存在(直到后来),或者该公司已倒闭。

我想要做的是:选择没有 NA 的列。我使用 data.table 因为它更快。这是我的工作代码:

example <- fread(file = "example.csv", key = "date")
example_select <- example[, 
                          lapply(.SD, 
                                 function(x) not(sum(is.na(x) > 0)))
                          ] %>%
  as.logical(.)
example[, ..example_select]
Run Code Online (Sandbox Code Playgroud)

是否有更好(更少行)的代码来执行相同的操作?谢谢你!

Mar*_*rek 5

?data.table帮助页面中,关于参数,.SDcols您可以发现可以使用谓词函数或其否定,所以最简单的解决方案是:

example[, .SD, .SDcols = !anyNA]
Run Code Online (Sandbox Code Playgroud)


Wal*_*ldi 2

尝试:

example[,lapply(.SD, function(x) {if(anyNA(x)) {NULL} else {x}} )]
Run Code Online (Sandbox Code Playgroud)