r - 如何在R中随机采样但保持某些值的位置相同

标签 r random sample

我有一个系统发育中名称的物种列表,我想随机更改系统发育中某些物种名称的位置,同时将物种名称的子集保留在其原始位置。

例如:

#full species list: 
names<- c("a","b","c","d","e","f","g")

我想保留(例如)的位置:

 const_names<- c("b","c","e") 

因此,期望的结果是:

"g","b","c","f","e","d","a"

我已经尝试过这个:

i1<-which(names != const_names)

names[i1]<-names[sample(i1)] 

(我尝试根据另一个问题的答案改编此内容,保持 NA 值的位置)

但是,名称变得完全随机,并且没有保留 const_names 的位置,并且名称有数千行包含 NA,在发现它没有保留所需名称的位置之前,我必须删除这些 NA。

最佳答案

ifelse(i<-names%in%const_names, names, sample(names[!i]))

[1] "g" "b" "c" "f" "e" "a" "d"

关于r - 如何在R中随机采样但保持某些值的位置相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75588491/

相关文章:

r 将 igraph 转换为 visNetwork

r - 使用纬度和经度向量查找 R 中的步行距离

python - 为什么 `scipy.stats.rv_continuous` 的这个子类没有生成正确范围内的随机变量?

java - 如何更改 Android 示例主页应用程序中显示的缩略图数量?

c++ - OpenCV - hybridtrackingsample.cpp 示例错误

r - 使用 R 中的人口比率和最小/最大标准将值分配给区域

r - R 中类似 Tableau 的 Markdown 分组表

r - checkboxGroupInput - 设置最小和最大选择数 - 滴答

c - ANSI C : How to split a string by newline and get a random line

javascript - JavaScript 中一组数字的随机排列