Пропуск аргумента в строке формата sprintf в R - PullRequest
0 голосов
/ 04 июня 2018

У меня есть функция, которая возвращает строковое представление периода с двумя датами, но я хочу, чтобы пользователь мог контролировать формат.Для этого я использую 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, которая была быаккуратный.

1 Ответ

0 голосов
/ 04 июня 2018

Как этот?

> sprintf("week ending %2$s","Mon 21","Sun 27")
[1] "week ending Sun 27"

Другой пример (для расширения темы),

> sprintf("week ending either %2$s or %4$s", "Mon 21","Sun 27","Mon 28","Sun 2")
[1] "week ending either Sun 27 or Sun 2"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...