Сделайте этот процесс более интенсивным процессором и меньше памяти - PullRequest
3 голосов
/ 02 марта 2012

Этот вопрос является продолжением Количество дней в году .

Я сделал то, что предложил Дирк, с огромным фреймом data.frame.Мои команды выглядят так:

dateSeq <- function(df) {
  res <- seq(as.Date(df["begin"]), as.Date(df["end"]), by = "1 day")
  format(res, "%Y")
}

dataFrame$seq <- apply(dataFrame, 1, dateSeq)
dataFrame_years <- do.call("c", dataFrame[["seq"]])

rm(dataFrame)
gc()
gc()

dataFrame_tab <- table(dataFrame_years)

Теперь эти команды заполняют мое пространство подкачки объемом 8 ГБ и 2 ГБ.В то же время мой процессор скучает, имея нагрузку на процессор, возможно, 15%.

Кроме того, моему компьютеру требуется много времени, чтобы выполнить мои "желания".Могу ли я перенести часть работы на процессор и немного разгрузить свой Ram?

1 Ответ

2 голосов
/ 02 марта 2012

Действительно, упомянутое решение требует лишней памяти.Попробуйте это:

begin <- as.POSIXlt("2007-05-20", tz = "GMT")
end <- as.POSIXlt("2010-06-13", tz = "GMT")

year <- seq(begin$year, end$year) + 1900
year.begin <- as.POSIXlt(paste(year, "01", "01", sep="-"), tz="GMT")
year.begin[1] <- begin
year.end <- as.POSIXlt(paste(year, "12", "31", sep="-"), tz="GMT")
year.end[length(year.end)] <- end
days <- as.numeric(year.end - year.begin) + 1
cbind(year, days)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...