相关疑难解决方法(0)

R内存管理/不能分配大小为n Mb的向量

我遇到了试图在R中使用大对象的问题.例如:

> memory.limit(4000)
> a = matrix(NA, 1500000, 60)
> a = matrix(NA, 2500000, 60)
> a = matrix(NA, 3500000, 60)
Error: cannot allocate vector of size 801.1 Mb
> a = matrix(NA, 2500000, 60)
Error: cannot allocate vector of size 572.2 Mb # Can't go smaller anymore
> rm(list=ls(all=TRUE))
> a = matrix(NA, 3500000, 60) # Now it works
> b = matrix(NA, 3500000, 60)
Error: cannot allocate vector of size 801.1 Mb # But that is all there …
Run Code Online (Sandbox Code Playgroud)

memory-management r vector matrix r-faq

131
推荐指数
7
解决办法
38万
查看次数

R,在多重对应分析之后发生分层聚类

我想聚类一个数据集(600000个观测值),对于每个集群,我想获得主要组件.我的载体由一个电子邮件和30个定性变量组成.每个定量变量有4个类:0,1,2和3.

所以我要做的第一件事是加载库FactoMineR并加载我的数据:

library(FactoMineR)
mydata = read.csv("/home/tom/Desktop/ACM/acm.csv")
Run Code Online (Sandbox Code Playgroud)

然后我将我的变量设置为定性(虽然我不包括变量'email'):

for(n in 1:length(mydata)){mydata[[n]] <- factor(mydata[[n]])}
Run Code Online (Sandbox Code Playgroud)

我正在从我的向量中删除电子邮件:

mydata2 = mydata[2:31]
Run Code Online (Sandbox Code Playgroud)

我正在这个新数据集中运行MCA:

mca.res <- MCA(mydata2)
Run Code Online (Sandbox Code Playgroud)

我现在想要使用hcpc函数对我的数据集进行聚类:

res.hcpc <- HCPC(mca.res)
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误消息:

Error: cannot allocate vector of size 1296.0 Gb
Run Code Online (Sandbox Code Playgroud)

你觉得我应该怎么做?我的数据集太大了吗?我用的是hcpc功能吗?

r cluster-computing acm bigdata

5
推荐指数
2
解决办法
2418
查看次数

使用rpy2:Update从python调用R的mRMRe

我试图使用R包mRMRe在Python中进行特征选择,除了这个特征选择部分,所有其他模块都在Python中.

utils = importr('utils')  # -- Only once.
utils.install_packages('mRMRe')
# Now we begin by loading in the R packages
pymrmr = importr('mRMRe')
Run Code Online (Sandbox Code Playgroud)

当install_packages部分运行时,我得到:

In[20]: utils.install_packages('mRMRe')
   ...: 
Out[20]: rpy2.rinterface.NULL
Run Code Online (Sandbox Code Playgroud)

我认为安装没有正确发生,因为:

In[19]: pymrmr = importr('mRMRe')
   ...: 
Traceback (most recent call last):
  File "C:\hduser\AppData\Local\Continuum\anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2910, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-19-e65c804fa4f7>", line 1, in <module>
    pymrmr = importr('mRMRe')
  File "C:\hduser\AppData\Local\Continuum\anaconda3\lib\site-packages\rpy2\robjects\packages.py", line 453, in importr
    env = _get_namespace(rname)
rpy2.rinterface.RRuntimeError: Error in inDL(x, as.logical(local), as.logical(now), ...) : 
  **unable to load shared object 'C:/Program …
Run Code Online (Sandbox Code Playgroud)

python r rpy2

5
推荐指数
0
解决办法
204
查看次数

将文档术语矩阵(DTM)转换为数据帧(R编程)

我是R编程语言的初学者,目前正在尝试从事一个项目.有一个巨大的文档术语矩阵(DTM),我想将其转换为数据框架.但是由于功能的限制,我无法这样做.

我一直在使用的方法是先将其转换为矩阵,然后将其转换为数据帧.

DF <- data.frame(as.matrix(DTM), stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)

它与小尺寸DTM完美配合.但是当DTM太大时,我无法将其转换为矩阵,产生如下所示的错误:

错误:无法分配大小为2409.3 Gb的向量

尝试在网上看几天,但我无法找到解决方案.如果有人能够建议将DTM转换为DF的最佳方式(特别是在处理大尺寸DTM时),那将非常感激.

r

4
推荐指数
2
解决办法
8749
查看次数

尽管是64位版本,但无法在R中分配向量

我正试图在R中做一个dcast来生成一个矩阵,如我问的另一个问题所示

但是,我收到一个错误:

错误:无法分配大小为2.8Gb的向量.

我的桌面有8GB的RAM,我正在运行ubuntu 11.10 64位版本.我可能使用了错误的R版本吗?我怎么知道,有没有办法在运行R时确定它?我当然必须有足够的空间来分配这个载体.

r

3
推荐指数
1
解决办法
3476
查看次数

R + ggplot2 - 无法分配大小为128.0 Mb的向量

我有一个4.5MB(9,223,136行)的文件,其中包含以下信息:

0       0
0.0147938       3.67598e-07
0.0226194       7.35196e-07
0.0283794       1.10279e-06
0.033576        1.47039e-06
0.0383903       1.83799e-06
0.0424806       2.20559e-06
0.0465545       2.57319e-06
0.0499759       2.94079e-06
Run Code Online (Sandbox Code Playgroud)

在每列中,值表示从0到100的值,表示百分比.我的目标是在ggplot2中绘制一个图形以查看它们之间的百分比(例如,使用第1列的20%,第2列实现的百分比是多少).Heres是我的R脚本:

library(ggplot2)
dataset=read.table("~/R/datasets/cumul.txt.gz")
p <- ggplot(dataset,aes(V2,V1))
p <- p + geom_line()
p <- p + scale_x_continuous(formatter="percent") + scale_y_continuous(formatter="percent")
p <- p + theme_bw()
ggsave("~/R/grafs/cumul.png")
Run Code Online (Sandbox Code Playgroud)

我遇到了问题,因为每次运行此R都会耗尽内存,从而出现错误:"无法分配大小为128.0 Mb的向量".我在Linux机器上运行32位R,我有大约4GB的可用内存.

我想到了一个解决方法,包括降低这些值的精度(通过舍入它们)并消除重复的行,以便我在数据集上有更少的行.你能给我一些关于如何做到这一点的建议吗?

r ggplot2

2
推荐指数
1
解决办法
3116
查看次数

优化Apply()在R中

下面代码的目标是对具有400列和6000行的数据集执行递归和迭代分析.在移动到所有可能的组合之前,它一次需要两列并对其进行分析.

正在使用的小子集大数据集:

  data1       data2       data3      data4
-0.710003   -0.714271   -0.709946   -0.713645
-0.710458   -0.715011   -0.710117   -0.714157
-0.71071    -0.714048   -0.710235   -0.713515
-0.710255   -0.713991   -0.709722   -0.71397
-0.710585   -0.714491   -0.710223   -0.713885
-0.710414   -0.714092   -0.710166   -0.71434
-0.711255   -0.714116   -0.70945    -0.714173
-0.71097    -0.714059   -0.70928    -0.714059
-0.710343   -0.714576   -0.709338   -0.713644
Run Code Online (Sandbox Code Playgroud)

代码使用apply():

# Function
analysisFunc <- function () {

    # Fetch next data to be compared
    nextColumn <<- currentColumn + 1

    while (nextColumn <= ncol(Data)){

        # Fetch the two columns on which to perform analysis
        c1 <- …
Run Code Online (Sandbox Code Playgroud)

optimization performance functional-programming r

2
推荐指数
1
解决办法
159
查看次数

mgcv bam() 错误:无法分配大小为 99.6 Gb 的向量

我正在尝试使用 bam(mgcv 库)拟合加法混合模型。我的数据集有 10^6 个观察结果,来自对嵌套在 300 个健康中心的 2.10^5 名儿童的生长的纵向研究。我正在寻找每个中心的斜率。该模型是

bam(haz ~ s(month, bs = "cc", k = 12)+ sex+ s(age)+ center+ year+ year*center+s(child, bs="re"), data)
Run Code Online (Sandbox Code Playgroud)

每当我尝试拟合模型时,都会出现以下错误消息:

Error: cannot allocate vector of size 99.6 Gb
In addition: Warning message:
In matrix(by, n, q) : data length exceeds size of matrix
Run Code Online (Sandbox Code Playgroud)

我正在使用 500 Gb de RAM 的集群。

感谢您的任何帮助

r gam

1
推荐指数
1
解决办法
1330
查看次数