Скажем, у меня есть вектор с именем all_combinations
с числами от 1 до 20.
Мне нужно извлечь 2 вектора (coding_1
и coding_2
) длины, равной number_of_peptide_clusters
, что также равно 20 в моем текущем случае.
Два новых вектора должны быть выбраны случайным образом из all_combinations
, чтобы они не перекрывались в каждой позиции индекса.
Я делаю следующее:
set.seed(3)
all_combinations=1:20
number_of_peptide_clusters=20
coding_1 <- sample(all_combinations, number_of_peptide_clusters, replace = FALSE)
coding_1
[1] 5 12 7 4 10 8 11 15 17 16 18 13 9 20 2 14 19 1 3 6
coding_2 <- sample(all_combinations, number_of_peptide_clusters, replace = FALSE)
coding_2
[1] 5 9 19 16 18 12 8 6 15 3 13 14 7 2 11 20 10 4 17 1
Это пример, который вызывает у меня проблемы, потому что только одно число перекрывается с одним и тем же индексом (5 в позиции 1).
Что бы я сделал в этих случаях, это определить перекрывающиеся числа и повторно выбрать их из списка всех перекрывающихся чисел...
Представьте, что coding_1
и coding_2
были:
coding_1
[1] 5 9 7 4 10 8 11 15 17 16 18 13 12 20 2 14 19 1 3 6
coding_2
[1] 5 9 19 16 18 12 8 6 15 3 13 14 7 2 11 20 10 4 17 1
В этом случае у меня было бы 5 и 9, перекрывающиеся в одной и той же позиции, поэтому я бы передискретизировал их в coding_2
из полного списка перекрывающихся [пересэмплируйте индекс 1 из c(5,9)
, чтобы он не был равен 5
, и индекс 2, чтобы он не равно 9
]. Итак, coding_2
будет:
coding_2
[1] 9 5 19 16 18 12 8 6 15 3 13 14 7 2 11 20 10 4 17 1
Однако в конкретном случае выше я не могу использовать такой подход... Итак, как лучше всего получить 2 выборки длины 20 из вектора длины 20, чтобы выборки не перекрывались одновременно позиции индекса?
Было бы здорово, если бы я мог получить второй образец coding_2
, уже зная coding_1
... В противном случае получение 2 одновременно также было бы приемлемым, если бы это облегчило задачу. Спасибо!
coding_1
иcoding_2
всегда имеют одинаковую длину,all_combinations
может быть равной или большей. - person DaniCee   schedule 04.11.2020