r - 将向量乘以变量以使用 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 矩阵。
你可以帮帮我吗?
解决方案
你很接近,这是你的例子的工作版本:
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 进行分析。
推荐阅读
- java - 杰克逊用特殊字符写入文件
- java - 如何使用使用 bpchar 的 h2 数据库执行单元测试?
- javascript - Javascript - 如何对多个 ajax 循环的结果求和
- python - 即使我使用了 super(),__init__() 方法也会被覆盖。为什么?
- python - Google pydrive 将文件上传到特定文件夹
- c++ - 如果一个用零填充整个 RAM 会发生什么
- html - 如何在 CSS/HTML 中的 em 和视口大小之间进行选择?
- sql - JPA - 我得到多行而不是 1
- excel - 在 for 循环的第一步后,Range 对象的偏移属性返回空?
- python - 如何排序列表,首先按项目的频率,然后按项目的值