首页 > 解决方案 > 性能问题 - 在列表中分配多个大矩阵

问题描述

亲爱的同事,我正在尝试在一个带有循环的列表中分配 349 个矩阵,其中包含大约 387024 个元素(17520x11 mxn)。

代码遵循这个结构

loading libraries
query to a database to fetch the number of a product
lsDF<-list()
for (i in 1:length(product_number)){
    querypart_1<-content
    i=as.numeric(product_number[i]) #index
    querypart_2<-content
    Query_total<-str_c(querypart_1,i,querypart_2)
    df<-as.data.table(dbFetch(dbSendQuery(DB, Query_total)) #fetching columns for the specified product
    df<-df %>% #dplyr operations and calculations
    df<-as.matrix(df)
    lsDF[[i]]<-df
}

但是,正如您可能期望的那样,如果运行循环,我的 RStudio 会中断。当我设置 i=value 并在循环外运行该代码时,该代码运行良好。

您知道更好的解决方案吗?

标签: rmultidimensional-arraynested-lists

解决方案


任何特别的@csgroen。最后我在尝试了几次之后让它工作了它打破了 5 次(最大达到文件 217),最后一次试验达到了 349。但最烦人的是我使用下面的代码将文件加载到列表中:

ldf <- list() # creates a list
listcsv <- dir(pattern = "*.csv")
for (i in 1:length(product_number)){
    ldf[[i]]<-read_csv(listcsv[i],col_types = cols(X1 = col_skip(), X2 = col_date(format = "%F"), X3 = col_datetime(format = "%F %T"), X4 = col_integer()))
}

大小只有 1.5 GB。我有 16GB 的 RAM,R 内存限制器也是 16GB,所以我不明白发生了什么。


推荐阅读