[英]How to create a large data frame in R with or without creating a matrix first and then converting it to a data.frame?
我需要創建一個具有80000行和80000列的矩陣。 但是,在閱讀了Rbloggers之后,我知道矩陣中的元素數不能超過2 ^ 31-1。 對於我的特定算法,避免該問題的計划是使用數據幀而不是矩陣。 有沒有一種方法可以創建尺寸為80000 x 80000的空數據框,而無需先創建矩陣,然后使用as.data.frame將其轉換為data.frame,如下所示?
myMatrix <- matrix(0, ncol = 40, nrow = 90)
myDataFrame <- as.data.frame(myMatrix)
您可以如下構建一個大小為80,000 x 80,000的空數據框:
dat <- do.call(data.frame, replicate(80000, rep(FALSE, 80000), simplify=FALSE))
dim(dat)
# [1] 80000 80000
dat[1,1]
# [1] FALSE
dat[80000,80000]
# [1] FALSE
基本上,您將構建一個包含要構建的數據框架的每一列的列表(我使用replicate
simplify=FALSE
使用replicate
構建了該列表),然后使用do.call
和data.frame
函數data.frame
構建了一個數據框架。
一些注意事項:
盡管分配這種大小的矩陣在64位linux(R版本3.2.0)中分配時不會失敗,但是基本操作似乎不起作用:
x <- matrix(0, nrow=80000, ncol=80000)
dim(x)
# [1] 80000 80000
x[1,1]
# Error: long vectors not supported yet: subset.c:733
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.