首页 > 解决方案 > 子集后随机选择行

问题描述

我有一个 10x3 NA 矩阵,它用 1-100 之间的随机数填充一个随机行。我想选择另一个随机行(可以说没有替换)并在不知道最初填充哪一行的情况下填充它。我不确定如何进行第二次选择。我想我将不得不找到一种方法来对带有 NA 的行进行子集化,然后随机选择。如果您需要详细信息,请告诉我。

myData <- matrix(data = NA,10,3)
random row selection.
myData[sample(1:10,size = 1,),] <- c(sample(1:100,size = 1,replace = TRUE),sample(1:100,size = 1,replace = TRUE),sample(1:100,size = 1,replace = TRUE))

          

不确定第二次随机选择

标签: rdataframerandomsubset

解决方案


您实际上并不需要单独存储子集。这一切都可以在一个while循环中处理:

myData <- matrix(data = NA,10,3)

while(sum(is.na(myData))>0){ ## while there are NAs
  if (sum(is.na(myData)[,1])>1){ ## if it is not the last row (because the last row will need differetn approach being a vector, and not a matrix)
    myData[is.na(myData)[,1],][ ## from the subset of NAs whose first column (and hence all of it) is not NA
      sample(1:nrow(myData[ ## choose one randomly
        is.na(myData)[,1],] ),size = 1),] = sample(1:100,size = 3,replace = TRUE) ## substitute it by a random vector of the same length
  } else { ## for the last one
    myData[is.na(myData)[,1],]= sample(1:100,size = 3,replace = TRUE) 
  }

}

推荐阅读