性能问题-在列表中分配几个大矩阵

时间:2018-12-05 13:47:36

标签: r multidimensional-array nested-lists

亲爱的同事们,我正在尝试为列表分配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并在循环外运行该代码时,代码可以完美运行。

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

1 个答案:

答案 0 :(得分:0)

任何特殊的@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,所以我不知道发生了什么。