我遇到了试图在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) 我想聚类一个数据集(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包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) 我是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中做一个dcast来生成一个矩阵,如我问的另一个问题所示
但是,我收到一个错误:
错误:无法分配大小为2.8Gb的向量.
我的桌面有8GB的RAM,我正在运行ubuntu 11.10 64位版本.我可能使用了错误的R版本吗?我怎么知道,有没有办法在运行R时确定它?我当然必须有足够的空间来分配这个载体.
我有一个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的可用内存.
我想到了一个解决方法,包括降低这些值的精度(通过舍入它们)并消除重复的行,以便我在数据集上有更少的行.你能给我一些关于如何做到这一点的建议吗?
下面代码的目标是对具有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) 我正在尝试使用 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 的集群。
感谢您的任何帮助