循环使用矩阵在列中累积值

时间:2016-04-27 15:43:17

标签: r loops

我试图制作一个简化的循环:

dens1ha <- (densidade[1:45,5])
dens10ha <- (densidade[46:90,5])
dens100ha <- (densidade[91:135,5])
densfc <- (densidade[136:180,5])
denscap <- (densidade[181:225,5])

我需要将它存储在单个向量(x)和矩阵(mm)中,如下所示: 矩阵密度线1到第45行第5列的值存储在向量x的第1列和矩阵mm中。线密度矩阵值46到第90行第5列存储在向量x的第2列和矩阵mm中 等等。

我试过了:

x=c()
ii[1]=1
for(i in seq(1, 255, by = 44)) { 
    x[i]=densidade[i:(i+44),5]
    ii=ii+1
    mm = matrix(x,nrow=i,ncol=ii)
}

1 个答案:

答案 0 :(得分:0)

根据您对mm的描述,我认为这应该可以解决问题:

mm <- matrix(densidade[,5], ncol=5)

如果需要,您还可以为列添加名称:

colnames(mm) <- c("dens1ha", "dens10ha", "dens100ha", "densfc", "denscap")

存储向量x的目标不太清楚。我怀疑你的所有目标都可以通过从矩阵中提取而不是建立一个单独的矩阵来实现:

# get dens1ha values as a vector
mm[,"dens1ha"]
mm[,1]

如果你真的想将这些值存储在一个单独的非矩阵结构中,那么在R中使用的最自然的对象就是一个列表:

x <- list()
for(i in 1:5) {
  x[[i]] <- densidade[(((i-1)*45)+1):(i*45),5]
}
# name the elements of the list
names(x) <- c("dens1ha", "dens10ha", "dens100ha", "densfc", "denscap")

您可以使用

从此列表中提取矢量
x[["dens1ha"]]

x[[1]]