首页 > 解决方案 > 如何解决 R 包安装的内存问题

问题描述

我在尝试通过添加其他数据来升级我的数据包时遇到错误。问题是我遇到了内存错误。我相信其他人已经制作了包含更大数据集的包。人们如何解决这个问题?

==> R CMD INSTALL --no-multiarch --with-keep.source cfsales

* installing to library ‘/usr/local/lib/R/site-library’
* installing *source* package ‘cfsales’ ...
** using staged installation
** R
** data
*** moving datasets to lazyload DB
Error in lazyLoadDBinsertVariable(vars[i], from, datafile, ascii, compress,  : 
  long vectors not supported yet: connections.c:5984
ERROR: lazydata failed for package ‘cfsales’
* removing ‘/usr/local/lib/R/site-library/cfsales’
Warning in q("no", status = status, runLast = FALSE) :
  system call failed: Cannot allocate memory

这是我的数据目录中的内容以及以 MB 为单位的文件大小的列表。

total 188M
-rw-rw-r-- 1 ahallam ahallam   1M Jun 17 20:18 holidays_events.rda
-rw-rw-r-- 1 ahallam ahallam   1M Jun 17 20:18 items.rda
-rw-rw-r-- 1 ahallam ahallam   1M Jun 17 20:18 oil.rda
-rw-rw-r-- 1 ahallam ahallam   1M Jun 20 08:51 store_day_sales.rda
-rw-rw-r-- 1 ahallam ahallam   1M Jun 17 20:18 stores.rda
-rw-rw-r-- 1 ahallam ahallam   2M Jun 19 17:23 test.rda
-rw-rw-r-- 1 ahallam ahallam 185M Jun 19 17:36 train.rda
-rw-rw-r-- 1 ahallam ahallam   1M Jun 17 20:18 transactions.rda

这是我的sessionInfo

> sessionInfo()
R version 3.6.0 (2019-04-26)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.2 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/openblas/libblas.so.3
LAPACK: /usr/lib/x86_64-linux-gnu/libopenblasp-r0.2.20.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8   
 [6] LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] cfsales_0.0.0.9000

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.1       clisymbols_1.2.0 packrat_0.5.0    crayon_1.3.4     withr_2.1.2      rprojroot_1.3-2  assertthat_0.2.1 R6_2.4.0        
 [9] backports_1.1.4  git2r_0.25.2     magrittr_1.5     rlang_0.3.4      rstudioapi_0.10  fs_1.3.1         testthat_2.1.1   desc_1.2.0      
[17] tools_3.6.0      glue_1.3.1       pkgload_1.0.2    compiler_3.6.0   usethis_1.5.0

标签: rr-package

解决方案


如评论中所述,消息

尚不支持长向量:connections.c:5984

是可疑的。看着那条线,我们看到

inlen = LENGTH(in);

其中LENGTH(相对于XLENGTH)不支持长向量,即具有多个2^31 - 1元素的向量。在某些形式中,您的数据文件由比这更长的向量表示。


推荐阅读