2010-07-04 52 views
1

format(Sys.Date(),"%m")返回"07",但我希望它返回"7",同时在需要时仍返回两个字符。添加width=8到参数列表没有帮助,也没有任何其他我已经尝试过。如何获取format()返回1个字符的结果?

我的最终目标是让股票报价阅读功能在页面上。 R在坚果壳中的182个工作正常。

回答

3

许多方法可以做到这一点,但substr()可能效果最好。与两个数字组合ifelse()。

as.character(as.numeric(format(Sys.Date(),"%m"))) 

as.character(as.POSIXlt(Sys.Date())$mon + 1) 

substr(format(Sys.Date(),"%m"), 2, 2) 
+0

嗯。谢谢。我一直在使用Nutshell的get.quotes命令手动玩,然后做一个手动的read.csv,我认为这是一个虚惊。我不确定这是什么问题,但我会检查一下。 也许我真正的问题应该是如何让这个功能起作用。 – Bill 2010-07-04 01:57:46

+0

你的错误是什么?看起来像本书是Google Preview-able:http://oreilly.com/catalog/9780596801717/preview – apeescape 2010-07-04 02:21:49

+0

substr()例子将只返回数字月份的最后一位,这不是十月到十二月。 – nullglob 2010-07-04 20:07:14

0

您可以使用gsub删除前导零:

> gsub('^0','',format(Sys.Date(),"%m"),perl=TRUE) 
[1] "7" 
> gsub('^0','',format(as.Date('2010-10-10'),"%m"),perl=TRUE) 
[1] "10"