Мы можем использовать mget
, чтобы вернуть все объекты в list
, и в качестве соответствующего data.table должно быть merge
d, использовать Map
, который может иметь несколько аргументов
Map(merge, mget(paste0("dt_q_", ticker_name)),
mget(paste0("meta_", ticker_name)),
MoreArgs = list(by = 'id'))
* 1007.*
Или используя lapply
, переберите 'ticker_name', затем paste
соответствующую часть 'prefix', get
значения строковых объектов и merge
lapply(ticker_name, function(x) merge(get(paste0("dt_q_", x)),
get(paste0("meta_", x)), by = 'id'))
ПРИМЕЧАНИЕ: В коде OP после циклического перебора 'ticker_name' (или ticker_list - не ясно), он paste
префикс с целым 'ticker_name', что не так, если мы проверяем цикл for
, гдеон проходит по последовательности 'имя_текста'.Мы также можем перебрать последовательность
lapply(seq_along(ticker_name), function(i) {
dt <- get(paste0("dt_q_", ticker_name[i]))
meta <- get(paste0("meta_", ticker_name[i]))
merge(x = dt, y = meta, by= "id")
})