Трудно дать точный код, не видя ваших данных, но вы, вероятно, хотите использовать %in%
, чтобы найти совпадения, например,
match_index <- which(dt$some_column %in% L)
На данный момент я составляю цифры, чтобы показать, какчтобы получить строки до и после.
match_index <- c(1, 33, 35, 50)
n <- 55 #in practice, this will be nrow(dt)
Для каждого совпадения получить последовательность значений от 10 до и после до 10, пропуская числа, выходящие за пределы диапазона данных.
all_values <- lapply(match_index, function(x) seq.int(max(1, x - 10), min(x + 10, n)))
Объединить в один вектор.
all_values <- do.call(c, all_values)
Удалить дубликаты.
all_values[!duplicated(all_values)]