快速缓存值是否超出了它的环境?如果是这样,为什么?

时间:2015-04-27 09:40:05

标签: r data.table posixct

免责声明:我认为'缓存'和'环境'这里是正确的词,虽然我是编程的新手,所以我可能误解了术语。

我最近一直试图掌握R的快速包时间,并且我意识到它有一种我在文档中看起来并没有出现的行为,也是我遇到问题的根本原因。功能

TL; DR - 如果我使用快速时间从父对象转换为POSIXct到子对象,然后以不同的方式使用它来计算从完整父对象到子对象2,子对象2将始终具有子对象的结果二,即使完全独立计算它们应该是不同的。

长版 -

我有很长的日期和时间列表作为转换为POSIX的字符(参见this question

示例数据集和工作文件可以是found here

当我读取示例文件时,我需要构建一个DateTime列,然后将其转换为POSIXct。

首先我读到:

App::bind('path.public', function() {
    return base_path().'/public_html';
});

然后我粘贴:

setwd("~/GitHub/fasttimeError")

example <- fread("datesAndTimes.csv")
# read example file of dates and times

然后我尝试转换:

example[ , DateTime := paste(ConsumptionDate, variable)]
# paste dates with times to make DateTime single column for POSIX conversion

Darn,这两个过程都没有正常工作。它们都从2006年开始生成数据集。

但出于某种原因,如果我清除整个工作环境(在RStudio中),并重新运行完全相同的代码但跳过创建library(fasttime) # load library for fastPOSIXct test1 <- example[ , DateTime := fastPOSIXct(x = DateTime)] # this will read the data as starting in 2006 test2 <- example[ , DateTime := fastPOSIXct(sub('(\\d*)/(\\d*)/(\\d*) (.*)', '\\3-\\1-\\2 \\4', DateTime))] # this should produce an identical file to test 1 的行,那么标记为test1的对象将完美转换

为什么?

0 个答案:

没有答案