R читать цель программно
У меня есть набор целей, скажем так
data_a
,
data_b
, ... Я хочу перебрать все наборы данных и загрузить данные. Этого можно добиться с помощью
tar_read(data_a)
или
tar_read(data_a")
. Поскольку я хочу загрузить цели программно, я хотел бы использовать что-то вроде этого в каком-то стиле:
target_name <- "data_a"
data <- tar_read(target_name)
Но затем я получаю сообщение об ошибке, что цель не найдена. Я знаю, что это связано с NSE с R, поскольку внутренние вызовы
substitute
, но я не мог понять, как замаскировать
target_name
сделать
tar_read
Работа. я пытался
eval(parse())
и различные варианты, представленные в Advanced R , а также rlang (например, !!, {{и т.п.) безрезультатно.
Есть идеи, как этого добиться?
1 ответ
Если вы посмотрите на код для
tar_read
, вы видите, что он использует NSE для преобразования параметра в строку символов, а затем вызывает функцию для полученной строки:
tar_read
#> function (name, branches = NULL, meta = tar_meta(store = store),
# store = targets::tar_config_get("store"))
#> {
#> force(meta)
#> name <- tar_deparse_language(substitute(name))
#> tar_read_raw(name = name, branches = branches, meta = meta,
#> store = store)
#> }
Однако вы также можете использовать напрямую. Руководство для
tar_read_raw
говорит:
Нравиться
tar_read()
Кромеname
это символьная строка.
Итак, вы должны просто уметь:
data <- tar_read_raw(target_name)