首页 > 解决方案 > 将向量乘以变量以使用 for 循环创建矩阵

问题描述

我正在尝试创建一个矩阵,该矩阵将展示未来 x 年预计的行业生产。

首先,我创建了一个 for 循环来创建列名称:(例如 10 年)

column.name <- vector()
for (i in 1:10) {
    object <- paste('ano.',i)
    column.name[i] <- object
}

然后我将我的产品保存在矢量中

products <- c('a','b','c',)

在这种情况下,我有一台可用于所有三种产品的机器。所以,我有一个参与向量,表示考虑到机器容量(4800),每种产品将生产多少。

participation<- c(0.60,0.20,0.20)
amount <- 4800

最后,我尝试用 for 循环将“参与”乘以 amout

prod <- matrix(length(products):length(column.name))
for (j in 1:length(column.name)) {
  for (i in 1:length(product)) {
    dado <- participation[i]*amount
    prod[i,j] <- dado
  }
  return(prod)
}

理论上我会得到一个矩阵,其中包含每年按产品计算的产值,用于计算收入。但是,我得到的只是一个空值的 1x1 矩阵。

你可以帮帮我吗?

标签: rloopsfor-loop

解决方案


你很接近,这是你的例子的工作版本:

column.name <- vector()
for (i in 1:10) {
  object <- paste('ano.',i)
  column.name[i] <- object
}

products <- c('a','b','c')

participation<- c(0.60,0.20,0.20)
amount <- 4800

prod <- matrix(data = NA, nrow = length(products), ncol = length(column.name))

for (j in 1:length(column.name)) {
  for (i in 1:length(products)) {
    dado <- participation[i]*amount
    prod[i,j] <- dado
  }
}

有几点需要考虑:

  • matrix()创建一个带有参数的新矩阵:data、nrow、ncol(按此顺序)。您应该按顺序指定每个参数或明确命名参数(即nrow=),否则您的第一个参数将被解释为data参数。
  • 小心周围的错别字!你有length(product)而不是length(products),你有一个额外的逗号products,等等。
  • 在您的具体问题范围之外,一个更深层次的问题是,您是否应该使用矩阵与 data.frames 进行分析。

推荐阅读