【问题标题】:Select a column of matrix in r by looping通过循环选择r中的一列矩阵
【发布时间】:2013-12-29 11:53:06
【问题描述】:

我有一个矩阵:

mvn.var=matrix(c(3,1,1,4,6,7,8,9),4,2,byrow=T)

我试试

for (i in 1:dim(mvn.var)[2]) {
    y[i]=mvn.var[,i]
}

因为我想要向量y[i],其中y[i] 是一个向量,它由前一个mvn.var 矩阵的i-th 列的元素组成。

我明白了:

 Warning messages:
1: In y[i] = mvn.var[, i] :
  number of items to replace is not a multiple of replacement length
2: In y[i] = mvn.var[, i] :
  number of items to replace is not a multiple of replacement length

【问题讨论】:

    标签: r loops matrix


    【解决方案1】:

    您正在尝试分配给向量的一个元素。试试这个吧,

    mvn.var=matrix(c(3,1,1,4,6,7,8,9),4,2,byrow=T)
    y = matrix(data=NA,2,4,byrow=T)
    for (i in 1:dim(mvn.var)[2]) {
        y[i,]=mvn.var[,i]
    }
    

    但是,您只需转置矩阵即可获得相同的结果,例如,t(mvn.var)

    【讨论】:

      【解决方案2】:

      您尝试将长度为 4 的向量放入长度为 1 的东西(= y 的第 i 个元素)。该消息会警告您,因为 y[i] 将仅包含该列的第一个元素。

      试着把你列个清单:

      mvn.var=matrix(c(3,1,1,4,6,7,8,9),4,2,byrow=T)
      y <- list()
      for (i in 1:dim(mvn.var)[2])
        y[[i]]=mvn.var[,i]
      y
      
      # [[1]]
      # [1] 3 1 6 8
      # 
      # [[2]]
      # [1] 1 4 7 9
      

      【讨论】:

        最近更新 更多