我有一个矩阵:
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
答案 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