3

この質問は、 Count days per yearのフォローアップです。

私は巨大なdata.frameでDirkが提案したことをしました。私のコマンドは次のようになります。

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 GB の RAM と 2 GB のスワップ領域をいっぱいにします。その間、私のプロセッサはおそらく 15% のプロセッサ負荷で退屈しています。

その上、私のコンピューターが私の「欲求」を満たすには何年もかかります。作業の一部を CPU に移して、RAM の負担を少し軽減できますか?

4

1 に答える 1

2

確かに、参照された解決策は、不必要なメモリを必要とします。これを試して:

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)
于 2012-03-02T15:16:23.883 に答える