我正在尝试将数据表转换为矩阵。
长格式数据表有几十万行,我想将它们格式化为宽格式矩阵。
我创建了以下示例:
library(stringi)
library(data.table)
library(reshape2)
x <- 500
test <- data.table(first=stri_rand_strings(x,5),
second=stri_rand_strings(x,5),
third=runif(x),
fourth= runif(x))
testMatrix <- acast(test,first~second,
value.var = "third",
fun.aggregate = mean,
fill=0)
当你增加x时,代码片段会在某些时候产生以下错误:
eval中的错误(替换(expr),envir,enclos): n必须是正整数
另外:警告信息: 在split_indices(.group,.n)中:通过强制引入到整数范围的NAs
它没有给我一个内存限制警告。这里发生了什么?为什么会这样?除矩阵或演员函数的RAM之外还有其他限制吗?
提前谢谢你 罗埃尔
答案 0 :(得分:1)
即使不是显示的错误,您可能会耗尽内存。设置x <- 5e3
会创建一个matrix
,其中包含2500万个191 MB的元素。改变x <- 5e4
将创建一个包含25亿个元素的矩阵,并使用粗略的外推法使矩阵大约为19 GB。