zoukankan      html  css  js  c++  java
  • 使用unlist将日期型数据的列表转换为向量时,出现的异常

    在使用unlist函数,将日期型的列表,转换为向量时,不会得到期望的结果,如下:

    > dateLst <- list(Sys.Date())
    > dateLst
    [[1]]
    [1] "2015-08-11"
    
    > dateVector <- unlist(dateLst)
    > dateVector
    [1] 16658


    同样的原因,在使用sapply(X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)时,如果X为日期型向量,FUN返回日期,那么结果不会是预期的日期型向量,如下:
    > date.vector.string <- c("20010101")
    > date.vector <- sapply(date.vector.string, get.date)
    > date.vector
    20010101 
       11323 

    其中:
    # Get date from date string. Assumed the format of date string is like "20011230"
    #
    # Args:
    # date.string: date string like "20011230"
    #
    # Returns:
    # date.
    get.date <- function(date.string){
      #  deal with the Error in strptime(x, format, tz = "GMT") : input string is too long
      if(nchar(date.string) != 8)
        return(NA)
     
      date <- try(as.Date(date.string, "%Y%m%d"))
      return(date)
    }

    sapply的结果,看起来可以认为是先调用lapply,得到的list后,调用unlist,试图得到与date.vector.string同类型的结果即向量。

    考虑到日期型列表转换为向量的麻烦,最好的方法就是不要出现日期型列表,尽量用向量。

    关于对
    > dateVector <- unlist(dateLst)
    > dateVector
    [1] 16658

    的解释,可以参加下列代码:
    > as.Date(16658, origin = "1970-01-01")
    [1] "2015-08-11"

    看来unlist时默认了一个时间点1970-01-01.
  • 相关阅读:
    0x00000090 该内存不能read written
    AutoCAD系统变量:EDGEMODE
    AutoCAD.net: DoubleClick
    Access 类型转换函数
    无法更改文件夹的隐藏属性 解决方法!
    Windows防火墙无法启动解决办法
    AutoCAD.net: DrawOrderChange display order of the entities in the drawing
    C#调用C++编写的COM DLL
    编辑AutoCAD 2010中新出现的CUIx文件[转]
    hook钩子
  • 原文地址:https://www.cnblogs.com/lizichao/p/4721276.html
Copyright © 2011-2022 走看看