【问题标题】:Sampling for a row from a matrix yields empty data从矩阵中对一行进行采样会产生空数据
【发布时间】:2019-05-25 07:21:11
【问题描述】:

我有一个名为“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}

但是当我运行它时,第二个样本总是给出空数据并且无法计算 a。当我返回并检查已选择行的数据框“fida”时,该行中有数据。我不知道出了什么问题,任何帮助将不胜感激。

【问题讨论】:

    标签: r sample


    【解决方案1】:

    您可以通过以下方式解决此问题。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 2018-12-16
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多