r - 子集后随机选择行
问题描述
我有一个 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))
不确定第二次随机选择
解决方案
您实际上并不需要单独存储子集。这一切都可以在一个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)
}
}
推荐阅读
- angular - 组件是 Angular 中 2 个模块的声明的一部分
- angular - 在路由器中返回路由器链接抛出错误?
- java - 如何创建抽象枚举?
- java - Docker 和 ram 的使用
- sql - 仅当列的所有值都匹配时,SQL 查询才更新表
- bash - Bash,如何将 nc commad 的输出放入 var
- angular - 条件脚本包含取决于环境
- python-3.x - 如何修复“找不到满足要求 bleu 的版本(来自版本:)找不到 bleu 的匹配分发”错误
- hadoop - 放:意外的URISyntaxException
- python - 使用 try 和 except 跳过文件