r - 如何基于另一个矩阵创建一个矩阵
问题描述
我有一个 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
解决方案
由于 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 3
推荐阅读
- c++ - int 显示为占用 8 个字节
- node.js - 无需用户交互即可将新属性添加到谷歌搜索控制台
- linux - 无法安装 BTRFS
- azure - Azure kudu 文档
- python - 根据 Python Pandas 中的相邻行计算值
- laravel - 如何使用 Auth 或中间件管理 laravel 会话
- c# - 在 C# 中的某个特定字符后获取值
- azure - 使用 powershell 创建 Azure 存储
- java - 在构建jar中找不到抽象类的方法
- mongodb - 除了 $lookup 运算符之外,MongoDB 4.0 中加入的替代方法是什么,因为它不适用于分片集合