R中的强制转换函数列

时间:2016-12-21 18:39:44

标签: r data.table

我正在尝试将数据表转换为矩阵。

长格式数据表有几十万行,我想将它们格式化为宽格式矩阵

我创建了以下示例:

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之外还有其他限制吗?

提前谢谢你 罗埃尔

1 个答案:

答案 0 :(得分:1)

即使不是显示的错误,您可能会耗尽内存。设置x <- 5e3会创建一个matrix,其中包含2500万个191 MB的元素。改变x <- 5e4将创建一个包含25亿个元素的矩阵,并使用粗略的外推法使矩阵大约为19 GB。