我必须读取文件夹列表中的文件并将数据保存在R中。 我使用以下代码来测试我的测试数据。当我将代码用于实际数据时 我收到这个错误 错误:OutOfMemoryError(Java):超出GC开销限制 来自:顶级
这是我为测试数据所做的工作
parent.folder <- "C:/Users/sandesh/Desktop/test_R"
sub.folder <- list.dirs(parent.folder, recursive =TRUE)[-1]
file <- file.path(sub.folder, "sandesh1.xlsx")
library(xlsx)
library(plyr)
fun <- function(file) {
df <- read.xlsx(file, sheetIndex=1)
}
df.big <- ldply(file, fun)
答案 0 :(得分:26)
这是rJava中的典型问题。它在XLConnect文档中得到了解答,该文档也使用rJava以与xlsx库相同的方式连接到excel。我引自here:
“这是因为XLConnect(xlsx相同)需要按顺序将整个数据对象复制到JVM 将其写入文件并且必须使用其内存大小的固定上限初始化JVM。改变 这个数量,您可以将参数传递给R的JVM,就像您可以通过命令行Java进程一样 rJava的选项支持:
options(java.parameters = "- Xmx1024m")
但是,请注意,在初始化JVM时,每个R会话只会精确评估一次这些参数 - 这通常是在您加载第一个使用Java支持的包之后,所以您应该尽早这样做 可能的“。
如上所述,在加载任何库之前运行脚本开头的选项功能,如果您通过Rstudio运行它,请确保在运行脚本之前重新启动它。
此外,请注意,根据您尝试解析的文件大小,即使这样也无法确定。