У меня есть 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
, поскольку он имеет тенденцию быть медленным.