【发布时间】:2018-06-01 01:57:40
【问题描述】:
我有一个类似于下面的data.table。
tab <- data.table(a = c(NA, 42190, NA), b = c(42190, 42190, NA), c = c(40570, 42190, NA))
tab
a b c
1: NA 42190 40570
2: 42190 42190 42190
3: NA NA NA
在指定行索引向量和列索引向量后,我希望返回一个向量,其中包含tab 中与指定的行索引和列索引向量相对应的点。
例如,假设我想获取tab 中的对角线元素。我会指定两个向量,
ri <- 1:3
ci <- 1:3
还有一些函数,function(ri, ci, tab),会返回 tab 的对角线元素。
如果tab 是data.frame,我会执行以下操作,
as.data.frame(tab)[cbind(ri, ci)]
但是,我想避免使用data.frame 语法。我还想避免for 循环,因为这往往很慢。
【问题讨论】:
-
可能会融化成长格式并设置key?
-
谢谢@chinsoon12。理想情况下,解决方案将避免转换,而是直接索引。
-
如果您要处理所有数字数据,最好从一开始就使用
matrix。您在矩阵上显示的索引方法非常快。 -
我会将此命名为 “使用 (row,col) 索引序列获取 DT/矩阵切片”
标签: r indexing data.table matrix-indexing