基本思路是這樣的:我有一個大的ffdf
(約550萬x 136字段)。我知道這個數據框中的一些列有全部是NA
的列。我如何找出哪些和適當地刪除它們?使用適用於大ffdfs
我的直覺是像做(假設df
是ffdf
):
apply(X=is.na(df[,1:136]), MARGIN = 2, FUN = sum)
應該給我NA
數爲每列向量,然後我可以找到哪些具有〜5.5百萬NA
值,刪除它們使用df <- df[,-c(vector of columns)]
等。非常簡單。
但是,apply
給了我一個錯誤。
Error: cannot allocate vector of size 21.6 Mb
In addition: Warning messages:
1: In `[.ff`(p, i2) :
Reached total allocation of 3889Mb: see help(memory.size)
2: In `[.ff`(p, i2) :
Reached total allocation of 3889Mb: see help(memory.size)
3: In `[.ff`(p, i2) :
Reached total allocation of 3889Mb: see help(memory.size)
4: In `[.ff`(p, i2) :
Reached total allocation of 3889Mb: see help(memory.size)
這告訴我,apply
無法處理這種規模的數據幀。有什麼替代方案可以使用嗎?
如何只'DF [,colSums(is.na(DF [1:136]))!== nrow(DF)]'? – zx8754
@ zx8754你的意思是'colSums'(請參閱我以前的編輯)?無論哪種方式,我仍然得到同樣的錯誤。 – Clarinetist
@ zx8754剛剛看到你的編輯,會嘗試 – Clarinetist