У меня есть 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
, поскольку он имеет тенденцию быть медленным.
matrix
. Метод индексации, который вы показываете на матрице, очень быстрый. - person thelatemail   schedule 01.06.2018