我正在嘗試創建一個矩陣來展示未來 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 回圈將“參與”乘以數量
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 矩陣。
你可以幫幫我嗎?
uj5u.com熱心網友回復:
你很接近,這是你的例子的一個作業版本:
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 進行分析。
uj5u.com熱心網友回復:
你在尋找這樣的東西嗎?
column.name <- paste0('ano.', 1:10)
products <- c('a','b','c')
participation<- c(0.60,0.20,0.20)
amount <- 4800
mat <- matrix(NA,
nrow = 3,
ncol = 10,
dimnames = list(product = products,
ano = column.name))
mat[] <- participation * amount
mat
#> ano
#> product ano.1 ano.2 ano.3 ano.4 ano.5 ano.6 ano.7 ano.8 ano.9 ano.10
#> a 2880 2880 2880 2880 2880 2880 2880 2880 2880 2880
#> b 960 960 960 960 960 960 960 960 960 960
#> c 960 960 960 960 960 960 960 960 960 960
由reprex 包( v2.0.0 )于 2021 年 10 月 22 日創建
另一種選擇是使用該outer函式,并在生成后命名矩陣的行和列
participation<- c(0.60,0.20,0.20)
amount <- rep(4800, 10)
mat <- outer(participation, amount)
colnames(mat) <- paste0('ano.', 1:10)
row.names(mat) <- c('a','b','c')
mat
#> ano.1 ano.2 ano.3 ano.4 ano.5 ano.6 ano.7 ano.8 ano.9 ano.10
#> a 2880 2880 2880 2880 2880 2880 2880 2880 2880 2880
#> b 960 960 960 960 960 960 960 960 960 960
#> c 960 960 960 960 960 960 960 960 960 960
由reprex 包( v2.0.0 )于 2021 年 10 月 22 日創建
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/333107.html
上一篇:讀取excel表格
下一篇:連接特定列的資料框
