如何仅从数据表中选择数字列

Fre*_* R. 5 r data.table

为什么这不起作用data.table

它适用于data.frame.有没有办法用数据表做到这一点?

x <- data.table(v1=1:20,v2=1:20,v3=1:20,v4=letters[1:20])
y <- x[,sapply(x,is.numeric)]
Run Code Online (Sandbox Code Playgroud)

返回:

v1    v2    v3    v4
TRUE  TRUE  TRUE FALSE
Run Code Online (Sandbox Code Playgroud)

Art*_*sov 17

没有的另一个解决方案with = FALSE.SDcols参数:

x[, .SD, .SDcols = which(sapply(x, is.numeric))]
Run Code Online (Sandbox Code Playgroud)

这也有效:

x[, .SD, .SDcols = sapply(x, is.numeric)]
Run Code Online (Sandbox Code Playgroud)


Mik*_*han 10

data.table需要with=FALSE抓住列号.

tokeep <- which(sapply(x,is.numeric))
x[ , tokeep, with=FALSE]
Run Code Online (Sandbox Code Playgroud)

  • 甚至需要哪个? - `x [,sapply(x,is.numeric),= = FALSE]` (8认同)