2017-07-04 15 views
0

に「XLSX」と「openxlsx」のパッケージを使用してExcelファイルをエクスポートする「」クラッシュ私は、同様のサイズを持つデータを持っているときR

library(openxlsx) 
a <- list() 
names(a) <- paste("sheet", seq_along(fulldata), sep="_") ### name for each sheet 
for (i in 1:172) { 
a[[i]] <- matrix(i,30,60) 
} 

write.xlsx(a, "a.xlsx") 

私は上記のコードを実行すると、数秒後に以下の、Rは自動的に閉じます。

library(xlsx) 
options(java.parameters = "-Xmx4000m") 
a <- list() 
for (i in 1:172) { 
a[[i]] <- matrix(i,30,60) 
} 
n <- paste("sheet", seq_along(fulldata), sep="_") ### name for each sheet 

for (i in 1:172) { 
write.xlsx(a[[i]], "c.xlsx", sheetName=n[[i]], append=TRUE) 
} 

上記のコードを実行すると、10分後にメモリ不足のエラーが返されます。 私は、使用するメモリを増やすこと

options(java.parameters = "-Xmx4000m") 

を使用しますが、まだ、それはメモリ不足を言います。
両方とも小さなデータでうまく動作しますが、一度に172枚の用紙をすべてエクスポートしようとすると動作しません。 1枚のExcelファイルに172枚のシートがすべて含まれている必要があります。

答えて

0

lapplyを使用してシートを作成すると、メモリの問題を緩和するのに役立ちます。

library(xlsx) 

# Create the list of matrices 
a <- list() 
for (i in 1:172) { 
    a[[i]] <- matrix(i,30,60) 
} 

# Set names for the matrices 
names(a) <- seq_along(a) 

# Create a workbook object 
wb <- createWorkbook() 

# Add each matrix to it's own worksheet inside of the workbook 
lapply(seq_along(a), function(matrices, matrix.names, i){ 
         ws <- createSheet(wb, matrix.names[[i]]) 
         addDataFrame(matrices[[i]], ws) 
        }, matrices = a, matrix.names = names(a)) 

# Set the file path to save the workbook to 
(output.path <- file.path(tempdir(), "output.xlsx")) 

# Save the workbook 
saveWorkbook(wb, output.path) 
関連する問題