R大型数据集的内存管理

时间:2018-06-05 13:53:13

标签: r memory-management

我是R的新手,我目前正在研究数据集(大小:2 GB大小)。我已将此数据集存储在工作空间中,每当我将此数据集加载到R中时,它会消耗超过90%的主内存,因此执行过滤,处理和分析数据等操作变得非常困难且非常耗时。

我主要使用dplyr包根据动态用户输入从主数据集中过滤和形成子集,但是获取数据需要花费大量时间。我也尝试过使用bigmemory包。虽然它解决了内存消耗问题,但它不允许在big.matrix对象上使用dplyr包。

所以有人可以告诉我如何以最佳内存消耗快速过滤大型数据集?

谢谢!

3 个答案:

答案 0 :(得分:0)

一种方法可能是在下载时将表截断为所需的列。

<强> 实施例

sample1 <- read.csv("https://www.sample-videos.com/csv/Sample-Spreadsheet-500000-rows.csv",
                    header=TRUE)

sample2 <- read.csv("https://www.sample-videos.com/csv/Sample-Spreadsheet-500000-rows.csv",
                    header=TRUE)[, c(1, 3, 5)]
> object.size(sample1)
3272064 bytes
> object.size(sample2)
1073240 bytes

要知道选择哪个,请使用

查阅字母
var.names <- names(read.csv("https://www.sample-videos.com/csv/Sample-Spreadsheet-500000-rows.csv",
                    header=TRUE))
> var.names
[1] "Eldon.Base.for.stackable.storage.shelf..platinum"
[2] "Muhammed.MacIntyre"                              
[3] "X3"                                              
[4] "X.213.25"                                        
[5] "X38.94"                                          
[6] "X35"                                             
[7] "Nunavut"                                         
[8] "Storage...Organization"                          
[9] "X0.8" 

答案 1 :(得分:0)

我使用过data.table和DT包。使用data.table我创建了一个data.table对象,可以快速访问和分析。使用DT包,我使用了renderDataTable函数在Shiny仪表板上快速获取详细信息。

答案 2 :(得分:0)

我使用过data.table和DT包。使用data.table我创建了一个可以快速访问和分析的data.table对象。使用DT包中的renderDataTable函数,我能够快速在Shiny仪表板上呈现表格。 感谢你的帮助!!