0

我环顾四周,似乎不太了解这是怎么回事。我在 Eclipse 中使用 R。我要导入的文件是 700mb,大约有 1500 万行和 6 列。由于我在加载时遇到问题,我已经开始使用该ff包。

library(ff)
FDF = read.csv.ffdf(file='C:\\Users\\William\\Desktop\\R Data\\GBPUSD.1986.2014.txt', header = FALSE, colClasses=c('factor','factor','numeric','numeric','numeric','numeric'), sep=',')
names(FDF)= c('Date','Time','Open','High','Low','Close')
#names the columns in the ffdf file
dim(FDF)
# produces dimensions of the file

然后我想创建一个 POSIXct 序列,该序列稍后将与导入的文件结合。我试过了;

tm1 = seq(as.POSIXct("1986/12/1 00:00"), as.POSIXct("2014/09/04 23:59"),"mins")) 
tm1 = data.frame (DateTime=strftime(tm1,format='%Y.%m.%d %H:%M'))

但是 R 一直在崩溃。然后我测试了这是 RStudio 并看到它们对向量的 where 约束。然而,它确实产生了正确的

dim(tm1)
names(tm1)

所以我回到 Eclipse,认为这与内存分配有关。我尝试了以下方法;

library(ff)
tm1 = as.ffdf(seq(as.POSIXct("1986/12/1 00:00"), as.POSIXct("2014/09/04 23:59"),"mins")) 
tm1 = as.ffdf(DateTime=strftime(tm1,format='%Y.%m.%d %H:%M'))
names(tm1) = c('DateTime')
dim(tm1)
names(tm1)

这给出了一个错误

'as.ffdf' 没有适用于类“c('POSIXct', 'POSIXt')”的对象的方法

我似乎无法解决这个问题。然后我尝试...

library(ff)
tm1 = as.ff(seq(as.POSIXct("1986/12/1 00:00"), as.POSIXct("2014/09/04 23:59"),"mins")) 
tm1 = as.ff(DateTime=strftime(tm1,format='%Y.%m.%d %H:%M'))

这会产生输出日期,但格式不正确。除此之外,当...

dim(tm1)
names(tm1)

在执行的地方,它们都返回 null。

问题

  1. 如何以我上面需要的格式生成 POSIXct seq?
4

1 回答 1

0

我们最终会到达那里。

我认为问题在于创建完整向量期间的可用 RAM。在这种情况下,我将向量分解为 3,将它们转换为 ffdf 格式以释放 RAM,然后rbind将它们绑定在一起。

我相信,一旦创建了格式化矢量的问题是由于访问 RAM 造成的。每次我尝试这个 R 时都会崩溃。

即使在我的机器下方进行工作,速度也很慢(4gb)。我已经订购了更多的 RAM,希望这将使未来的操作顺利进行。

以下是工作代码;

library(ff)
library(ffbase)

tm1 = seq(from = as.POSIXct('1986-12-01 00:00'), to = as.POSIXct('2000-12-01 23:59'), by = 'min')
tm1 = data.frame(DateTime=strftime(tm1, format='%Y.%m.%d %H:%M'))
# create data frame within memory contrainst
tm1 = as.ffdf(tm1)
# converts to ffdf format 
memory.size()

tm2 = seq(from = as.POSIXct('2000-12-02 00:00'), to = as.POSIXct('2010-12-01 23:59'), by = 'min')
tm2 = data.frame(DateTime=strftime(tm2, format='%Y.%m.%d %H:%M'))
# create data frame within memory contrainst
tm2 = as.ffdf(tm2)
memory.size()

tm3 = seq(from = as.POSIXct('2010-12-2 00:00'), to = as.POSIXct('2014-09-04 23:59'), by = 'min')
tm3 = data.frame(DateTime=strftime(tm3, format='%Y.%m.%d %H:%M'))
memory.size()
tm3 = as.ffdf(tm3)
# converts to ffdf format 
memory.size()

tm4 = rbind(tm1, tm2, tm3)
# binds ffdf objects into one
dim(tm4)
# checks the row numbers 
于 2014-11-30T15:56:41.850 回答