使用 R 中的索引位置将 data.table 列提取为向量
可以使用列表子设置提取指定索引处的列,即 [[, 运算符。与单括号相比,双括号运算符速度更快,可用于提取指定索引处的元素或因子级别。如果指定的索引多于行数,则返回说明索引越界的异常。这里不能使用单括号 [,运算符,因为它返回数据表的一个子集,即 data.table 元素作为输出,而不是原子向量。执行此操作需要恒定的时间。
例子:
R
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)
R
# 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 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”