Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 高效地将数据从data.table转换为矩阵(速度和内存)_R_Matrix_Data.table - Fatal编程技术网

R 高效地将数据从data.table转换为矩阵(速度和内存)

R 高效地将数据从data.table转换为矩阵(速度和内存),r,matrix,data.table,R,Matrix,Data.table,我有一个~20000x2000数据,如何从data.table()到matrix高效地转换速度和内存 我尝试了m=as.matrix(dt),但这需要很长时间,而且有很多警告df=data.frame(dt)需要很长时间,也会导致达到内存限制 有什么有效的方法可以做到这一点吗?或者,仅仅是data.table中的一个函数,它以矩阵形式返回dt(需要使用glmnet包输入统计模型) 简单地包装到as.matrix中会产生以下错误: x = as.matrix(dt) Error: cannot

我有一个~20000x2000数据,如何从
data.table()
matrix
高效地转换速度和内存

我尝试了
m=as.matrix(dt)
,但这需要很长时间,而且有很多警告
df=data.frame(dt)
需要很长时间,也会导致达到内存限制

有什么有效的方法可以做到这一点吗?或者,仅仅是data.table中的一个函数,它以矩阵形式返回
dt
(需要使用
glmnet
包输入统计模型)

简单地包装到as.matrix中会产生以下错误:

x = as.matrix(dt)

Error: cannot allocate vector of size 2.9 Gb
In addition: Warning messages:
  1: In unlist(X, recursive = FALSE, use.names = FALSE) : Reached total allocation of 8131Mb: see help(memory.size)
  2: In unlist(X, recursive = FALSE, use.names = FALSE) : Reached total allocation of 8131Mb: see help(memory.size)
  3: In unlist(X, recursive = FALSE, use.names = FALSE) : Reached total allocation of 8131Mb: see help(memory.size)
  4: In unlist(X, recursive = FALSE, use.names = FALSE) : Reached total allocation of 8131Mb: see help(memory.size)
我的操作系统:我有64位Windows7和8gb内存,我的Windows任务管理器显示Rgui.exe以前占用空间超过4gb,但仍然可以

试试看:

    result <- as.matrix(tidytext::cast_sparse(dat_table,
    column_name_of_rows,
    column_name_of_columns,
    column_name_of_values))
结果@GibsonGay:

我在将character列包含到矩阵中时犯了一个错误,这将矩阵的类提升为character for all columns。删除此列可以生成整数矩阵,并成功地转换它,而不会出现错误/警告,并且模型运行良好


请提供一个。@空假设dt包含1个字符的列(键),其余为整数。@Chase非常感谢,我同意data.table非常棒。我在将character列包含到矩阵中时犯了一个错误,这将矩阵的类提升为character for all columns。删除此列可以生成一个整数矩阵,并在没有错误/警告的情况下成功转换,模型运行良好。:)感谢您的帮助,我一定会记住Amazon EC2@GibsonGay感谢您的更新。我开始在那里担心了一会儿。你能不能自我回答,自我接受,请收尾。@GibsonGay自我回答请简洁。。。