我的问题在于对大数据集(大约 2500 万行和 10 列,即大约 1GB 数据)的简单计算。 我的系统是:
32bits/Windows7/4Gb Ram/R Studio 0.96, R 2.15.2
我可以使用 BigMemory 包来引用我的数据库。并在我的数据库上使用函数。我也可以使用 ff 包、filehash 等来做到这一点。
问题是在计算简单计算(如唯一值、平均值等)时,我遇到了典型的问题
"cannot allocate vector size n mb"
,其中 n 可以小至 70mb - 95mb 等。
我知道到目前为止提供的所有(我认为)解决方案:
increase RAM.
launch R with inline code "--max-mem-size XXXX",
use memory.limit() and memory-size() commands,
use rm() and gc(),
work on 64bit,
close other programs, free memory, reboot,
use packages bigmemory, ff, filehash, sql, etc etc.
improve your data, use integers, shorts, etc. ...
check memory usage of intermediate calculations, ...
etc.
所有这些都经过测试,完成,(除了转移到另一个系统/机器,很明显)等等。
但我仍然得到那些“无法分配向量大小 n mb”,例如,其中 n 约为 90mb,R 或其他程序几乎没有使用内存,所有这些都重新启动,新鲜......我知道自由内存和从windows和R等分配的区别,但是,
没有意义,因为可用内存超过 3GB。 我怀疑原因确实是在 windows32b 下——R 内存管理,但购买 4GB 的 RAM 或将所有系统切换到 64 位以分配 70mb 似乎几乎是个笑话。
我有什么遗漏吗?
最佳答案
问题在于 R 尝试分配 90mb 的连续空间。不幸的是,经过多次操作,可能内存太碎片化了。
如果可能,请尝试优化您的代码以一次使用小块数据。
如果您尝试像您提到的那样执行简单的计算(例如,均值、最大行数等),您可以尝试使用 biganalytics,它可以让您做一个数字big.matrix 对象的操作。
否则,据我所知,除了切换到 64 位操作系统和 64 位 R 之外,没有什么可做的。
关于R : Any other solution to "cannot allocate vector size n mb" in R?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13343299/
我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou
我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file
当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub
我在新的Debian6VirtualBoxVM上安装RVM时遇到问题。我已经安装了所有需要的包并使用下载了安装脚本(curl-shttps://rvm.beginrescueend.com/install/rvm)>rvm,但以单个用户身份运行时bashrvm我收到以下错误消息:ERROR:Unabletocheckoutbranch.安装在这里停止,并且(据我所知)没有安装RVM的任何文件。如果我以root身份运行脚本(对于多用户安装),我会收到另一条消息:Successfullycheckedoutbranch''安装程序继续并指示成功,但未添加.rvm目录,甚至在修改我的.bas
下面的代码在我第一次运行它时就可以正常工作:require'rubygems'require'spreadsheet'book=Spreadsheet.open'/Users/me/myruby/Mywks.xls'sheet=book.worksheet0row=sheet.row(1)putsrow[1]book.write'/Users/me/myruby/Mywks.xls'当我再次运行它时,我会收到更多消息,例如:/Library/Ruby/Gems/1.8/gems/spreadsheet-0.6.5.9/lib/spreadsheet/excel/reader.rb:11
我正在学习Ruby的基础知识(刚刚开始),我遇到了Hash.[]method.它被引入a=["foo",1,"bar",2]=>["foo",1,"bar",2]Hash[*a]=>{"foo"=>1,"bar"=>2}稍加思索,我发现Hash[*a]等同于Hash.[](*a)或Hash.[]*一个。我的问题是为什么会这样。是什么让您将*a放在方括号内,是否有某种规则可以在何时何地使用“it”?编辑:我的措辞似乎造成了一些困惑。我不是在问数组扩展。我明白了。我的问题基本上是:如果[]是方法名称,为什么可以将参数放在括号内?这看起来几乎——但不完全是——就像说如果你有一个方法Foo.d