Я хотел бы условно соединить две таблицы данных вместе:
library(data.table)
set.seed(1)
key.table <- 
  data.table(
    out = (0:10)/10,
    keyz = sort(runif(11))
  )
large.tbl <- 
  data.table(
    ab = rnorm(1e6),
    cd = runif(1e6)
  )
в соответствии со следующим правилом: соответствие наименьшему значению out в key.table, значение keyz которого больше cd. У меня есть следующее:
library(dplyr)
large.tbl %>%
  rowwise %>%
  mutate(out = min(key.table$out[key.table$keyz > cd]))
 который обеспечивает правильный вывод. Проблема в том, что операция rowwise кажется дорогой для large.tbl, которую я фактически использую, сбой ее, если она не находится на определенном компьютере. Есть ли меньше операций, связанных с памятью? Следующее выглядит немного быстрее, но недостаточно для проблемы, которую у меня есть.
large.tbl %>%
    group_by(cd) %>%
    mutate(out = min(key.table$out[key.table$keyz > cd]))
Это пахнет проблемой с ответом data.table, но ответ не должен использовать этот пакет.
