簡體   English   中英

R 中是否有像 bigmemory 這樣的包可以處理大型列表對象?

[英]Is there a package like bigmemory in R that can deal with large list objects?

我知道 R 包 bigmemory 在處理大型矩陣和數據幀方面效果很好。 但是,我想知道是否有任何包或任何方法可以有效地處理大列表。

具體來說,我創建了一個列表,其元素為向量。 我有一個 for 循環,在每次迭代期間,多個值被附加到該列表中的選定元素(向量)。 起初,它運行得很快,但是當迭代超過 10000 次時,它逐漸變慢(一次迭代大約需要一秒鍾)。 我將經歷大約 70000 到 80000 次迭代,之后這個列表會很大。

所以我只是想知道是否有像 big.list 這樣的東西作為 bigmemory 包中的 big.matrix 可以加速整個過程。

謝謝!

我不確定這是否是一個有用的答案,但是您可以使用filehash包以交互方式處理磁盤上的列表。

例如,這里有一些代碼可以創建磁盤數據庫,為數據庫分配一個預先分配的空列表,然后運行一個函數(獲取當前時間)來填充數據庫中的列表。

# how many items in the list?
n <- 100000
# setup database on disk
dbCreate("testDB") 
db <- dbInit("testDB")
# preallocate vector in database
db$time <- vector("list", length = n)
# run function using disk object
for(i in 1:n) db$time[[i]] <- Sys.time()

在此過程中幾乎沒有使用 RAM,但是由於磁盤 I/O 恆定,它非常慢(在我的某些測試中比在 RAM 中執行它慢兩個數量級)。 所以我不確定這個方法是否能很好地回答如何加速處理大對象的問題。

DSL包可能會有所幫助。 DList對象的工作原理類似於 R 列表的替代品。 此外,它也提供了類似設施的分布式列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM