对矩阵中的一行进行采样会产生空数据
Sampling for a row from a matrix yields empty data
我有一个名为 "fida" 的矩阵,我从中随机抽取了一定数量的行。在这些行上,我 运行 在一组命令的末尾有一个条件,如果为真,我想从同一矩阵中随机抽取另一行,该矩阵不是之前抽样的任何行。
这样做我有一个条件。但在此之前,当我使用相同的命令从矩阵中采样时,它本身给了我一个空数据
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}
但是我运行这个的时候,第二个sample总是给出空数据,a无法计算。当我返回并检查我的数据框 "fida" 以查找已选择的行时,该行中有数据。我不知道出了什么问题,我们将不胜感激。
您可以通过以下方式解决这个问题。
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, ]
换句话说,您有一个仅包含未抽样行的矩阵,用作计算的新行的来源。
我有一个名为 "fida" 的矩阵,我从中随机抽取了一定数量的行。在这些行上,我 运行 在一组命令的末尾有一个条件,如果为真,我想从同一矩阵中随机抽取另一行,该矩阵不是之前抽样的任何行。
这样做我有一个条件。但在此之前,当我使用相同的命令从矩阵中采样时,它本身给了我一个空数据
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}
但是我运行这个的时候,第二个sample总是给出空数据,a无法计算。当我返回并检查我的数据框 "fida" 以查找已选择的行时,该行中有数据。我不知道出了什么问题,我们将不胜感激。
您可以通过以下方式解决这个问题。
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, ]
换句话说,您有一个仅包含未抽样行的矩阵,用作计算的新行的来源。