r - 在 R 中创建矩阵的更有效的代码
问题描述
我想构建一个矩阵,其中行的第一列是从 1 到 3 的随机值,第二列是从 1 到 4 的随机值,列号为 tm-3。我创建了以下代码来用随机数填充矩阵
tm <- 10
A <- matrix(0, 5, 23)
for(i in 1:5){
for(j in 1:c(tm-3)){
A[i,j] <- sample(1:c(j+2), 1, replace = T)
}
}
A[ ,-c(1:c(tm-3))] <- sample(1:tm, 16, replace = T)
这段代码当然可以正常工作,但是当出现大矩阵时,双循环会减慢整个程序的速度。
是否可以根据上述公式摆脱双精度并用随机数填充前几列?
解决方案
这是一种替换双循环的方法:
sapply(1:(tm-3), function(x) {sample(1:(x+2), 5, replace = TRUE)})
# example output
# [,1] [,2] [,3] [,4] [,5] [,6] [,7]
# [1,] 1 1 5 3 3 5 5
# [2,] 2 1 1 1 4 5 2
# [3,] 1 1 3 5 1 1 6
# [4,] 2 1 3 1 7 6 9
# [5,] 2 4 1 1 7 3 8
推荐阅读
- api - 特定时间范围的 Prometheus 数据备份
- python - 无法使用 matplotlib 绘制图形显示错误?
- typescript - ESLint 配置中的“parser”和“parserOptions.parser”有什么区别?
- angular - 使用 Angular 中的主题通过服务向组件发送数据
- java - 如何将java文件转换为在Android上运行的apk
- go - 无法在 WSL 上安装 go 工具
- java - 使用 Jackson 转换日期/时间时保留时区信息
- microsoft-graph-api - 从 Microsoft Graph 客户端获取响应标头
- css - 如何使图像溢出容器宽度而不是 100% 高度上的翘曲
- java - 为什么我自己的异常不需要参数?