慢字符串到日期转换功能

时间:2014-06-12 17:31:13

标签: r

我编写了以下函数将字符串向量转换为日期向量(for循环中的代码受到这篇文章的启发:R help converting factor to date)。当我传入大小为1000的向量时,大约需要30秒。不是非常慢,但我最终需要传递大约100,000,所以这可能是一个问题。任何想法为什么这么慢和/或如何加快它?

toDate <- function (dates) 
{
    theDates <- vector()
    for(i in 1:length(dates))
    {
        temp <- factor(dates[i])
        temp <- as.Date(temp, format = "%m/%d/%Y")
        theDates[i] <- temp
    }
 class(theDates) <- "Date"
 return(theDates)
}

1 个答案:

答案 0 :(得分:3)

只是做:

as.Date(dates, format = "%m/%d/%Y")
  1. 您不需要遍历dates向量,因为as.Date()可以在单次拍摄中处理一个字符向量。您的函数会对length(dates)进行as.Date()次调用以及对其他函数进行一些分配,这些函数的开销都是完全没必要的。
  2. 您不希望将每个日期转换为系数。您根本不想转换它们(as.Date()只会将它们转换回字符)。如果您确实希望转换它们,factor() 矢量化,那么您可以(但您根本不需要此,功能中的任何位置)移除factor()行并在dates <- as.factor(dates)循环外插入for() 。但同样,根本不需要这样做!