2016-12-08 4 views
-8

各列の最大値を別々に計算したいだけです。 sapply単純なメモリ・オーバーフローに入った使用:data.tableのsapplyの代わりのイディオムは何ですか?

# dt is my data.table object 
res <- sapply(dt, max, na.rm=T) # fails due to memory problems 

それが11ギガバイトの全体的なサイズで、100万行1000列の疎テーブルです。

require(data.table) 
dtDate <- fread(paste0(filePath, "train_date.csv")) 
dim(dtDate) 
require(pryr) 
object_size(dtDate) 
+2

正確に使用したコードは何ですか?データサイズは?あなたの仕様は何ですか? [this](https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-intro.html)を読んだことがありますか? * lapply用のイディオム*などの例があります。 –

+1

おそらく、 'apply(df、2、max)'を使うのが良いでしょう。 – Istrel

+0

1mio行と1000列のスパーステーブルで、全体のサイズは11GB @DavidArenburgです。 – CodingButStillAlive

答えて

1

警告、非常に大きなテーブルが作成されます。

私は、ファイルtrain_date.csvと次のコード行を使用するに取り組んでいます!

dt <- as.data.table(matrix(runif(1000*1000000),ncol=1000)) 
dt[,lapply(.SD,max)] 
+0

ありがとうございますが、これは動作しません。 data.framesを含むdata.tableが作成されました。 – CodingButStillAlive

+0

セットアップやデータに問題があります。それは動作するはずです。私は完全に私のために動作する上記の例のdata.tableを含めた。 – mpjdem

+0

ありがとうございました。私は行って、それを台無しにしていることを確認するために自分のコードをチェックします。 – CodingButStillAlive

関連する問題