Dat*_*erd 8 r matrix dataframe
我需要创建一个包含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)
Run Code Online (Sandbox Code Playgroud)
您可以构建一个大小为 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
Run Code Online (Sandbox Code Playgroud)
replicate基本上,您构建一个包含要构建的数据框的每一列的列表(我使用with构建了列表simplify=FALSE),然后您使用do.call和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
Run Code Online (Sandbox Code Playgroud)