【发布时间】:2017-05-30 03:08:30
【问题描述】:
我使用 R 已经有一段时间了,但并不擅长优化我的代码以提高性能。
给定一个向量Y,长度为t,我正在尝试生成一个顺序为t 的方阵,以便它的ith 行对应于所有的$1_{Y_i j = 1, 2, ..., t。所以这是一个 0 / 1 二进制矩阵。
Y <- matrix(0, length(t), length(t))
for(i in 1:length(t)) Y[i, ] <- (t[i] <= t)
但是,我不认为这是最有效的方法,主要是看对象的大小。它与密集矩阵的大小相同,以字节为单位。我的目标是将其扩展到大t,但我相信这样一个矩阵的计算速度和存储空间将花费太长时间。有没有更快更有效的方法来存储和计算这个矩阵?
【问题讨论】:
-
你没有在你的代码中定义
t,所以你的代码不起作用,因为t是转置函数。 -
for 循环应该非常快,但您可以通过计算上三角或下三角来加快它:所以大约是计算/存储的一半。
-
您正在尝试扩展您的自定义稀疏矩阵列表示。严格来说,我们不关心
t的各个数值,只关心它们的相对排名:t = rank(t)给出完全相同的输出。
标签: r matrix sparse-matrix