R如何通过组合矩阵

时间:2015-04-22 22:13:26

标签: r matrix

我正在使用Lagrange Multiplier方法研究约束优化问题。我正在尝试在R中构建这个巨大的稀疏矩阵以计算值。

这是矩阵的样子。如果需要,可以在下面链接查看问题的详细信息。

enter image description here Implementation of Lagrange Multiplier to solve constrained optimization problem.

这是我提出的代码,对不起,如果我的方法对你来说很笨拙,因为我是矩阵操作和编程的新手。

首先,我从csv文件导入3154 x 30矩阵,然后将所有列合并为一个。然后我创建了一个对角矩阵来模仿矩阵的左上角。

然后,模仿矩阵的左下角。我创建了一个3154x3154标识矩阵并试图复制它30次。

我这里有两个问题

  1. 当我尝试cbind对角稀疏矩阵时,它返回了两个列表而不是矩阵的组合。所以我不得不把它转换成矩阵,但这太占用了我的记忆。我想知道是否有更好的方法来实现这一目标。

  2. 我想知道是否有多次cbind矩阵的公式。因为我需要复制矩阵30次。我很好奇是否有更清洁的方式来解决所有的打字。 (感谢@Jthorpe解决了这个问题)

  3. 我会为其余的矩阵做同样的事情。我知道这不是解决这个问题的最佳方法。请随时建议任何更聪明的方法。谢谢!

    library(Matrix)
    dist_data=read.csv("/Users/xxxxx/dist_mat.csv", header=T)
    c=ncol(dist_data) #number of cluster - 30
    n=nrow(dist_data) #number of observations - 3153
    
    #Create a c*n+c+n = 3153*30+3153+3 = 97,773 coefficient matrix
    dist_list=cbind(unlist(dist_data))
    Coeff_mat=2*.sparseDiagonal(c*n,x = c(dist_list))
    
    diag=.sparseDiagonal(n)
    Uin <- do.call(cbind,rep(list(as.matrix(diag)),30))
    

0 个答案:

没有答案