如果我在不同情况下需要不同的结尾,如何构造for循环?

0 loops for-loop r

我有一个任务来构建一个给定规则的数据框:

有一个矢量像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]
  }
}
Run Code Online (Sandbox Code Playgroud)

它显示错误

[< - (tmp,j,i,value = 100*p [i]*LGD [i])中的错误:
下标超出边界`.我应该做一个ifelse循环还是有任何可能的方法来解决这个问题&

Rol*_*and 5

我会创建一个稀疏矩阵:

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,] . | . | |
#...
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因你真的需要一个密集的整数矩阵(你为什么会这样?),那么你就可以这样做+as.matrix(M).