【问题标题】:getting numbers out of sys.time从 sys.time 中获取数字
【发布时间】:2012-09-02 23:05:11
【问题描述】:

是否有一种更有效/优雅的方法来执行以下操作,其中我将Sys.time() 输出中的所有数字连接起来

x <- as.character(Sys.time())
paste0(substr(x,0,4),substr(x,6,7),substr(x,9,10),substr(x,12,13),substr(x,15,16),substr(x,18,20))

它可能包括以某种方式粘贴和折叠,但不知道该怎么做......

【问题讨论】:

    标签: r concatenation


    【解决方案1】:

    我会认为format 是首选:

    format(Sys.time(), "%Y%m%d%H%M%S")
    [1] "20120909231732"
    

    【讨论】:

    • 非常好...谢谢...虽然我不确定两者之间有什么区别?
    • format 是一个通用函数。它检查 hte 对象的类并分派到特定于类的函数,在本例中为 format.POSIXct。另一方面,strftime 只是 format.POSIXct 的包装器。我想可以基于它的帮助页面(与strptime 共享)是使用strftime 的论据,您可以在其中找到有关格式字符串的所有详细信息,但我认为r-更常见的选择程序员将使用format
    【解决方案2】:

    您可以使用strftime()POSIXct 对象转换为字符,使用格式文字:

    strftime(Sys.time(), "%Y%m%d%H%M%S")
    [1] "20120910061602"
    

    有关要使用的字符串文字的详细信息,请参阅?strftime

    【讨论】:

    • 这可能是gsub 的首选解决方案 - 当我回来编辑我的答案时,你打败了我阅读?strftime 的帮助文件!它也可能更快(?)。
    • 我总是忘记 strf 类型的命令,谢谢提醒!
    【解决方案3】:

    你可以去掉非数字字符:

    gsub("[^0-9]","",x)
    [1] "20120910151242"
    

    【讨论】:

    • 本来要发paste(unlist(strsplit(x, '[[:punct:] ]')),collapse = '')作为解决方案,上面的要简单得多
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    相关资源
    最近更新 更多