Obtendo uma fatia data.table com uma sequência de índices (linha, col)
eu tenho umdata.table
que se assemelha ao abaixo.
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
Após a especificação de um vetor de índices de linha e um vetor de índices de coluna, eu gostaria que um vetor retornasse contendo os pontos emtab
correspondente ao vetor especificado de índices de linha e de coluna.
Por exemplo, suponha que eu queira obter os elementos diagonais emtab
. Eu especificaria dois vetores,
ri <- 1:3
ci <- 1:3
e alguma função,function(ri, ci, tab)
, retornaria os elementos diagonais detab
.
E setab
eram umdata.frame
, Eu faria o que está abaixo,
as.data.frame(tab)[cbind(ri, ci)]
mas gostaria de evitardata.frame
sintaxe. Eu também gostaria de evitar umafor
loop, pois isso tende a ser lento.