我有一个大矩阵num [1:62410, 1:48010]
我想要一个长格式的 data.table
e.g.
Var1 Var2 value
1: 1 1 -4227.786
2: 2 1 -4211.908
3: 3 1 -4197.034
4: 4 1 -4183.645
5: 5 1 -4171.692
6: 6 1 -4161.634
最小的例子
m = matrix(1:5, nrow = 1000, ncol = 1000)
x = data.table(reshape2::melt(m))
理想情况下,我希望同时具有列名称 x、y 和值。
以前我一直在使用data.table(melt(mymatrix))
。
但从警告来看reshape2::melt
已弃用,这在速度方面可能不是最佳的,解决此问题的最佳“data.table”方法是什么?
以下内容没有回答我的问题:快速融化的 data.table 操作 https://stackoverflow.com/questions/13968579/fast-melted-data-table-operations
重塑 data.table 的正确/最快方法 https://stackoverflow.com/questions/6902087/proper-fastest-way-to-reshape-a-data-table
其他答案参考已弃用的reshape2
package
这是一个例子:
# example matrix
m = matrix(1:12, nrow = 4)
# load data table
library(data.table)
我们可以直接提取数据、行和列信息,它应该相当快:
dt = data.table(
row = rep(seq_len(nrow(m)), ncol(m)),
col = rep(seq_len(ncol(m)), each = nrow(m)),
value = c(m)
)
结果是:
row col value
1: 1 1 1
2: 2 1 2
3: 3 1 3
4: 4 1 4
5: 1 2 5
6: 2 2 6
7: 3 2 7
8: 4 2 8
9: 1 3 9
10: 2 3 10
11: 3 3 11
12: 4 3 12
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)