我有一个函数返回给定两个日期的句点的字符串表示,但我希望用户能够控制格式。为此,我使用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"
但我找不到一种方法来构造一个格式字符串,该字符串删除第一个参数并返回“周末结束Sun 27”。注意我真的想要一个只改变格式字符串的解决方案,或者知道这是不可能的......
我尝试过使用%0s
创建第一个格式为0宽度的技巧,但没有快乐:
> sprintf("%0s week ending %s","Mon 21","Sun 27")
[1] "Mon 21 week ending Sun 27"
显然,我可以通过让调用者说明格式是否使用开始日期和/或结束日期,但是如果有一种方法可以使用sprintf
格式字符串来完成这项工作。
答案 0 :(得分:6)
喜欢这个吗?
> 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"