我有一个30行12列的矩阵。我想创建另一个基于这个原始矩阵的矩阵。我想使前6列中的条目是原始矩阵条目的2倍。我想使7-11列中的条目是原始矩阵整体的1.5倍。我希望第12列与原始矩阵相同。
我有以下代码,但它没有给出我想要的输出
sales=matrix(rpois(360, 10), nrow=30)
sales_dol=matrix(, nrow=30, ncol=12)
for (j in 1:12) {
if (j<7)
sales_dol[,j]=sales[,j]*2
} else if (j<12){
sales_dol[,j]=sales[,j]*1.5
} else{
sales_dol[,j]=sales[,j]
}
sales_dol发布于 2021-09-23 06:03:25
因为R函数是矢量化的,所以你不需要for循环来做到这一点。
set.seed(123)
sales=matrix(rpois(360, 10), nrow=30)
head(sales)
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
#[1,] 8 12 11 6 10 16 9 6 10 14 8 12
#[2,] 9 11 12 15 8 7 10 9 11 12 7 7
#[3,] 14 9 9 10 10 15 10 16 10 16 8 11
#[4,] 10 9 9 13 17 6 13 9 4 13 10 16
#[5,] 10 8 7 8 16 11 8 5 7 11 7 9
#[6,] 15 7 7 7 5 8 6 4 9 7 10 3
sales_dol <- cbind(sales[, 1:6] * 2, sales[, 7:11] * 1.5, sales[, 12])
head(sales_dol)
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
#[1,] 16 24 22 12 20 32 13.5 9.0 15.0 21.0 12.0 12
#[2,] 18 22 24 30 16 14 15.0 13.5 16.5 18.0 10.5 7
#[3,] 28 18 18 20 20 30 15.0 24.0 15.0 24.0 12.0 11
#[4,] 20 18 18 26 34 12 19.5 13.5 6.0 19.5 15.0 16
#[5,] 20 16 14 16 32 22 12.0 7.5 10.5 16.5 10.5 9
#[6,] 30 14 14 14 10 16 9.0 6.0 13.5 10.5 15.0 3https://stackoverflow.com/questions/69294715
复制相似问题