从矩阵中采样一行会产生空数据

时间:2019-05-25 07:21:11

标签: r sample

我有一个名为“ 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”是否为选中的行时,该行中有数据。我不知道出了什么问题,我们将不胜感激。

1 个答案:

答案 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, ]

换句话说,您有一个仅容纳未采样行的矩阵,该矩阵用作计算新行的源。