我有一个系统发育中名称的物种列表,我想随机更改系统发育中某些物种名称的位置,同时将物种名称的子集保留在其原始位置。
例如:
#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/