У меня есть два TXT-файла. Оба файла представляют собой списки строк с одной строкой на строку, например.Повторная выборка между двумя списками
GRIM1
PHOXA2
SLITRK4
Оба текстовых файла длиной ~ 20 000 строк. Я хочу случайным образом отбирать 500 строк из файлов 1 и 700 строк из файла 2. Затем я хочу подсчитать количество строк, которые перекрывают оба этих подмножества.
Затем я хочу повторить этот процесс 100 раз и вычислить min, max и среднее количество строк, которые перекрывают эти подмножества из 100 повторных попыток.
Я пытался адаптировать код, который используется для работал для подобных задач, но я получаю сообщение об ошибке:
Error in sample.int(length(x), size, replace, prob) :
cannot take a sample larger than the population when 'replace = FALSE'
Этот код был:
listA <- read.csv(file="file1.txt", header=F)
listB <- read.csv(file="file2.txt", header=F)
listA <- as.character(listA) # to check that you really have a vector of gene names #maybe you have to do: listA <- as.character(listA)
listB <- as.character(listB)
res <- rep(NA, 100)
genesToDraw <- 500 # how many to select
genesToDraw2 <- 700 # if you want to take different number from second list
for(i in 1:length(res)){
drawA <- sample(x=listA, size=genesToDraw, replace=FALSE)
drawB <- sample(x=listB, size=genesToDraw2, replace=FALSE) # or size=genesToDraw2
res[i] <- length(intersect(drawA, drawB))
}
hist(res, breaks=20)
table(res)
max(res)
sum(res > 5) # how often i
Спасибо заранее за вашу помощь и пожалуйста дайте мне знать, если я уточню.
В ответ на комментарии, когда я запускаю dput (listA) и dput (listB) после части as.character кода, я получаю кучу разделенных запятыми чисел в качестве вывода. Вот подмножество:
1100, 4576, 7394, 1343, 4997, 13807, 1233, 9580, 15254, 10466, 3333, 622, 11177, 4067, 4800, 7592, 5363, 9646, 11213, 14314, 2475, 8389, \n12559, 12808, 5248, 10423, 7856, 12976, 9695, 1674, 2090, 9369, 12089, 13952, 1218, 7966, 6949, 4088, 623, 4768, 2002, 11776, 14710, 5502, 6212, 7300, 2123, 7194, 2128, 1683, 14987, 4491, 2672, 10275, 9424, 997, 15506, 14307, 2644, 11508, 9272, 5107, 10146, 11693, 1802, 652, 13073, 4268, 5435, 718, 4845
С наилучшими пожеланиями,
Rubal
Что такое вывод 'length (listA)' и 'length (listB)'? – Ujjwal
проверить класс listA и listB. первый аргумент для образца должен быть вектором или целым числом, и, скорее всего, это кадр данных. Ошибка говорит, что количество элементов в x меньше количества образцов, которые вы хотите принять, что не допускается, если replace = FALSE – DMT
класс является символом. – user964689