R语言 使用索引位置提取data.table列作为矢量
可以使用列表子集,即[[
,操作符来提取指定索引处的列。与单括号相比,双括号操作符更快,可以用来提取指定索引处的元素或因子级。如果指定的索引超过了行数,那么会返回一个异常,说明索引超出了界限。这里不能使用单括号[
, 操作符,因为它返回数据表的一个子集,也就是一个data.table元素作为输出,而不是一个原子矢量。执行这个操作需要恒定的时间。
例子
library("data.table")
# declaring data table
data_frame <- data.table(col1 = c(2,4,6),
col2 = c(4,6,8),
col3 = c(8,10,12),
col4 = c(20,16,14))
print ("Original DataTable")
print (data_frame)
# extracting column 2
print ("Column 2 as a vector")
vec <- data_frame[[2]]
print (vec)
输出
[1] “Original DataTable”
col1 col2 col3 col4
1: 2 4 8 20
2: 4 6 10 16
3: 6 8 12 14
[1] “Column 2 as a vector”
[1] 4 6 8
data.table的每一列也可以通过在整个data.table上循环来提取一个单独的向量。ncol()方法可以用来返回data.table中的总列数。进行这一操作所需的总时间相当于O(n),其中n是列。
例子
# getting required libraries
library("data.table")
# declaring data table
data_table <- data.table(col1 = c(2,4,6),
col2 = FALSE,
col3 = LETTERS[1:3])
print ("Original DataTable")
print (data_table)
# getting number of columns
cols <- ncol(data_table)
# looping through columns
for (i in 1:cols){
# getting ith col
cat(i, "th col \n")
print(data_table[[i]])
}
输出
[1] “Original DataTable”
col1 col2 col3
1: 2 FALSE A
2: 4 FALSE B
3: 6 FALSE C
1 th col
[1] 2 4 6
2 th col
[1] FALSE FALSE FALSE
3 th col
[1] “A” “B” “C”