我试图用1中的样本填充索引矩阵的列:无论使用for循环。这样做的目的是引导编码问题。我遇到的问题是,一旦for循环达到不是行长度的倍数,for循环就不会正确运行。出于某种原因,它认为我希望每列中的数字表示相等。我如何让它停下来?
index.mat=matrix(NA,nr=12,nc=10,byrow=FALSE)
for(i in 1:5)
{
index.mat[,i] <- sample(1:i, i, replace=TRUE)
print(index.mat)
}
将打印
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 1 2 1 NA NA NA NA NA NA
[2,] 1 1 2 4 NA NA NA NA NA NA
[3,] 1 1 2 1 NA NA NA NA NA NA
[4,] 1 1 2 2 NA NA NA NA NA NA
[5,] 1 1 2 1 NA NA NA NA NA NA
[6,] 1 1 2 4 NA NA NA NA NA NA
[7,] 1 1 2 1 NA NA NA NA NA NA
[8,] 1 1 2 2 NA NA NA NA NA NA
[9,] 1 1 2 1 NA NA NA NA NA NA
[10,] 1 1 2 4 NA NA NA NA NA NA
[11,] 1 1 2 1 NA NA NA NA NA NA
[12,] 1 1 2 2 NA NA NA NA NA NA
作为给出错误之前的最终矩阵
Error in index.mat[, i] <- sample(1:i, i, replace = TRUE) :
number of items to replace is not a multiple of replacement length
答案 0 :(得分:0)
只需使用sample(i, size = 12, replace = TRUE)
。
您的LHS是index.mat[,i]
,其长度为12。
您的RHS为sample(1:i, i, replace = TRUE)
,其长度为i
。
本质上,R
会在长度不匹配时回收RHS - 这意味着,当i=2
时,您的RHS长度为2,并且只会重复6次匹配LHS长度12。
在这种特殊情况下,如果RHS长度不是LHS长度的除数,则会出现错误 - 首先发生错误,您猜对了i=5
(从1,2,3开始) ,4和12均匀划分。)