Чтобы ответить на ваш фактический вопрос, используя lapply
над names(value.list)
, вы, как показывает ваш вывод, берете каждый из элементов value.list
и выполняете замену.Однако все это происходит независимо, т. Е. Замены в конечном итоге не объединяются в один результат.
Чтобы сделать что-то очень похожее на ваш подход, мы можем использовать Reduce
, который выполняет именно это объединение:
Reduce(function(x, y) sub(paste0(c("@", y, "@"), collapse = ""), value.list[y], x),
init = format.string, names(value.list))
# [1] "a-bcd/def"
Если мы вызываем анонимную функцию f
, то результат будет
f(f(f(format.string, "A"), "B"), "C")
именно так, как вы и предполагали, я считаю.