gpt4 book ai didi

r - 将大型 2d 矩阵快速融化为 3 列 data.table

转载 作者:行者123 更新时间:2023-12-01 19:42:44 24 4
gpt4 key购买 nike

我有一个大矩阵 num [1:62410, 1:48010]
我想要一个长格式的 data.table

例如

   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 和 value。

以前我一直在使用 data.table(melt(mymatrix)) .
但是从 reshape2::melt 的警告来看已弃用,这在速度方面可能不是最佳选择,解决此问题的最佳“data.table”方法是什么?

以下不回答我的问题:
Fast melted data.table operations
Proper/fastest way to reshape a data.table

其他答案引用已弃用的 reshape2包裹

最佳答案

下面是一个例子:

# 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

关于r - 将大型 2d 矩阵快速融化为 3 列 data.table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62213639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com