【发布时间】:2014-06-12 17:31:13
【问题描述】:
我编写了以下函数来将字符串向量转换为日期向量(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)
}
【问题讨论】:
-
请提供可重复的示例?链接问题中给出的答案有什么问题,已经矢量化了???
-
我不确定我是否理解您的问题。代码有效,只是速度很慢,所以我想知道是否有更好的方法来完成我想做的事情。
-
您对
as.Date()产生了 100,000 次调用,每次迭代调用一次。当as.Date()已经矢量化时,这很愚蠢,因此你可以只做as.Date(dates, format = "%m/%d/%Y")- 如果它们已经是一个,你不需要转换为一个因子,如果不是,它们将是字符所以将这种转换为因子会产生更多开销。 -
啊,我明白了。谢谢!它现在运行得非常快。
标签: r