我有一个名为“ fida”的矩阵,从中我已经随机采样了一定数量的行。在这些行上,我正在运行一组命令,在这些命令的末尾有一个条件,如果为true,我想从同一矩阵中随机采样另一行,而不是先前采样的任何行。
为此,我有一个条件。但是在此之前,当我使用相同的命令从矩阵中采样时,会得到一个空数据
reps=5 #number of samples
randreps=sample(nrow(fida), size = reps, replace = F)
for (loop in randreps)
{calculate a}
if(a==0)
{loop=sample(nrow(fida), size = 1, replace = F)
calculate a}
但是,当我运行此命令时,第二个示例始终提供空数据,并且无法计算a。当我返回并检查我的数据框“ fida”是否为选中的行时,该行中有数据。我不知道出了什么问题,我们将不胜感激。
答案 0 :(得分:0)
您可以通过以下方式解决此问题。
set.seed(357)
xy <- matrix(1:30, nrow = 10)
original.rows <- sample(10, size = 3, replace = FALSE)
original <- xy[original.rows, ]
# Your calculations.
# Sample from the original matrix again, but without the already sampled
# samples.
middle <- xy[-original.rows, ]
output.row <- sample(nrow(middle), size = 3, replace = FALSE)
output <- xy[output.row, ]
换句话说,您有一个仅容纳未采样行的矩阵,该矩阵用作计算新行的源。