我正在尝试创建一个矩阵或数据框,其中矩阵的每一行都将由每个循环的结果填充。事实是我们在每个循环中得到的值数量是不同的。那么我该怎么做,我们首先用循环结果填充列值,而行/行上的其余未填充值将为空。我的 r 代码是
x<-c(9,10,6,17,23,16,27,18,8,11)
K<-7
ash<-matrix(, nrow = K, ncol = max(x))
for (i in 1:K){
aa<-max.col(theta, ties.method="first")==i
ash[i,]<-which(aa==TRUE)
}
一个例子是
a1<-c(1,4,5,7)
> a2<-c(3,6,12,3,45)
> a3<-c(5,9,12,14,3,9,7,2)
> main<-matrix(c(1,4,5,7,NA,NA,NA,NA,3,6,12,3,45,NA,NA,NA,5,9,12,14,3,9,7,2),nrow=3,byrow = TRUE)
> main
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 4 5 7 NA NA NA NA
[2,] 3 6 12 3 45 NA NA NA
[3,] 5 9 12 14 3 9 7 2
所需的矩阵应该看起来像主矩阵,a1、a2、a3是每个循环的结果。当我手动创建示例“main”时,无法弄清楚如何为您提供完全可生产的输出。
答案 0 :(得分:1)
代码应该改为
for (i in 1:K){
aa<-max.col(theta, ties.method="first")==i
i1 <- which(aa)
ash[i,i1] <- i1
}
基于'a1'、'a2'、'a3'
lst1 <- list(a1, a2, a3)
mx <- max(lengths(lst1))
do.call(rbind, lapply(lst1, `length<-`, mx))
-输出
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 4 5 7 NA NA NA NA
[2,] 3 6 12 3 45 NA NA NA
[3,] 5 9 12 14 3 9 7 2