r - 性能问题 - 在列表中分配多个大矩阵
问题描述
亲爱的同事,我正在尝试在一个带有循环的列表中分配 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 并在循环外运行该代码时,该代码运行良好。
您知道更好的解决方案吗?
解决方案
任何特别的@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,所以我不明白发生了什么。
推荐阅读
- android - Android 架构组件:我应该将身份验证令牌保存在哪里?ViewModel 还是 SharedPreferences?
- git - 根据提交消息提取多个提交的 Git diff
- azure-devops - 无法从 Azure Devops 获取内部 Gitlab 的数据(获取 Git 获取失败,退出代码:128)
- typo3 - TYPO3:带有 EXT:news 的 OpenGraph 图像大小
- c# - 用 Plinq 替换 Task.WhenAll
- nim-lang - Nim 中的类似 Go 的并行性?
- firebase - 颤振 - 流不与 Firebase 连接
- r - 使用 knitr 从 Rmarkdown 创建 PDF 时减少标题边距
- kotlin - 如何在伴随对象中保留内部变量
- json - BizTalk 2013R2 中的 JSON 到 XML 架构