У меня есть функция, которая возвращает строковое представление периода с двумя датами, но я хочу, чтобы пользователь мог контролировать формат.Для этого я использую sprintf
, и вызывающий передает в строку формата, давая вызывающему абоненту возможность использовать такие вещи, как:
> sprintf("from %s - %s","Mon 21","Sun 27")
[1] "from Mon 21 - Sun 27"
или
> sprintf("%s - %s inclusive","Mon 21","Sun 27")
[1] "Mon 21 - Sun 27 inclusive"
Я обнаружилчто если у вас недостаточно знаков% в строке формата, это не имеет значения, поэтому вы можете сделать:
> sprintf("week begin %s","Mon 21","Sun 27")
[1] "week begin Mon 21"
, но я не могу найти способ построить строку формата, которая отбрасываетпервый аргумент и возвращает «неделя, заканчивающаяся вс 27».Заметьте, я действительно хочу решение, которое только изменяет строку формата, или чтобы знать, если это невозможно ...
Я пробовал такие хитрости, как создание первого формата 0-width с %0s
, но без радости:
> sprintf("%0s week ending %s","Mon 21","Sun 27")
[1] "Mon 21 week ending Sun 27"
Очевидно, что я могу сделать эту работу, заставив вызывающего абонента сказать, использует ли формат даты начала и / или окончания, но если бы был способ сделать это со строкой формата sprintf
, которая была быаккуратный.