通过循环选择r中的矩阵列

时间:2013-12-29 11:53:07

标签: r loops matrix

我有一个矩阵:

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]是一个向量,由前一个i矩阵的mvn.var列的元素组成。

我明白了:

 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

2 个答案:

答案 0 :(得分:0)

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

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)

答案 1 :(得分:0)

你试图将长度为4的向量放入长度为1的东西(= y的y元素)。该消息警告您,因为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