r - 如果我在不同情况下需要不同的结尾,如何构造一个 for 循环?
问题描述
我的任务是构建具有给定规则的数据框:
有一个像 的向量V<-c(10, 20, 15, 22, 60)
。我需要长度(V)的列和max(V)
行。对于每个 i 列,我需要 V[i] 值。例如,对于第一列,我需要 10 个非零值和 50 个零,对于第二列,我需要 20 个非零值和 40 个零。对于这个问题,我运行了一个代码:
EL<-matrix( rep( 0, len=3400), nrow = 8)
for (i in 1:8){
for (j in 1:(n[i])){
EL[j,i]<-100*p[i]*LGD[i]
}
}
它显示一个错误
[<-( tmp , j, i, value = 100 * p[i] * LGD[i]) 中的错误:
下标越界`。我应该做一个 ifelse 循环还是有任何可能的方法来解决这个问题&
解决方案
我会创建一个稀疏矩阵:
library(Matrix)
V<-c(10, 20, 15, 22, 60)
M <- sparseMatrix(dims = c(max(V), length(V)),
i = sequence(V), j = rep(seq_along(V), V))
#60 x 5 sparse Matrix of class "ngCMatrix"
#
# [1,] | | | | |
# [2,] | | | | |
# [3,] | | | | |
# [4,] | | | | |
# [5,] | | | | |
# [6,] | | | | |
# [7,] | | | | |
# [8,] | | | | |
# [9,] | | | | |
#[10,] | | | | |
#[11,] . | | | |
#[12,] . | | | |
#[13,] . | | | |
#[14,] . | | | |
#[15,] . | | | |
#[16,] . | . | |
#[17,] . | . | |
#[18,] . | . | |
#...
如果由于某种原因你真的需要一个密集的整数矩阵(你为什么要?),你可以这样做+as.matrix(M)
。
推荐阅读
- r - 访问矩阵中的命名属性
- python - 如何求和、平均、计数 groupbys 和标准偏差相同的数据帧?
- python - 如何获取 `QMainWindow` 的屏幕位置并打印?
- isabelle - Isabelle 中 apply 和 Isar 样式之间的等价性
- python - pytest-xdist 为每个测试生成随机和唯一的端口
- javascript - CSRF 令牌丢失或不正确 (Django)
- ios - 从修补代码重新创建 JTAppleCalender 时遇到问题
- spring-boot - Spring boot 2.0.5 和 HSQL 文件 db 显示注销用户缺少权限或在实体包含 @ManyToOne 时找不到对象
- html - CSS Only 手风琴 - 如何折叠内容
- scala - 参数匹配器的无效使用 0 预期匹配。3 记录