jam*_*rta 139 r data.table
我们如何使用其数字索引(位置)的向量选择多个列data.table?
这就是我们如何处理data.frame:
df <- data.frame(a = 1, b = 2, c = 3)
df[ , 2:3]
# b c
# 1 2 3
Run Code Online (Sandbox Code Playgroud)
Jos*_*ien 182
对于data.table的 版本>= 1.9.8,以下所有工作正常:
library(data.table)
dt <- data.table(a = 1, b = 2, c = 3)
# select single column by index
dt[, 2]
# b
# 1: 2
# select multiple columns by index
dt[, 2:3]
# b c
# 1: 2 3
# select single column by name
dt[, "a"]
# a
# 1: 1
# select multiple columns by name
dt[, c("a", "b")]
# a b
# 1: 1 2
Run Code Online (Sandbox Code Playgroud)
对于data.table的 版本< 1.9.8(需要使用数字列选择with = FALSE),请参阅此答案的此前版本.另见新闻,v1.9.8的变化/可能的突发变化/第2点.
Tom*_*Tom 42
它有点冗长,但我已经习惯了使用隐藏.SD变量.
b<-data.table(a=1,b=2,c=3,d=4)
b[,.SD,.SDcols=c(1:2)]
Run Code Online (Sandbox Code Playgroud)
这有点麻烦,但你不会失去其他data.table功能(我不认为),所以你仍然可以使用其他重要的功能,如连接表等.
R Y*_*oda 38
如果要使用列名来选择列,只需使用.(),这是以下的别名list():
library(data.table)
dt <- data.table(a = 1:2, b = 2:3, c = 3:4)
dt[ , .(b, c)] # select the columns b and c
# Result:
# b c
# 1: 2 3
# 2: 3 4
Run Code Online (Sandbox Code Playgroud)
raf*_*ira 17
从v1.10.2开始,你也可以使用 ..
dt <- data.table(a=1:2, b=2:3, c=3:4)
keep_cols = c("a", "c")
dt[, ..keep_cols]
Run Code Online (Sandbox Code Playgroud)