В настоящее время у меня есть некоторый код, который работает для вычисления перекрытия между 8 различными списками генов, чтобы увидеть, сколько генов являются общими для двух списков одновременно.Я хотел бы изменить код так, чтобы я мог получить тот же результат, но в процентах.Пожалуйста, найдите код ниже: Внутренний цикл должен быть изменен в соответствии со следующим: 1. Получите максимум g1 и g2 2. Разделите перекрытие на максимум 3. Рассчитайте%
Я понимаю необходимые шагипринять, но я борюсь, когда дело доходит до изменения кода, как сообщения об ошибках, как правило, происходят.Если бы кто-то мог помочь, это было бы здорово!
filelist <- list(data.file1, data.file2, data.file3, data.file4, data.file5, data.file6, data.file7, data.file8)
all(sapply(filelist, file.exists))
# read files:
gene.lists <- lapply(filelist, function(f) {
scan(file=f, what=character())
})
# set up empty matrix
x <- (length(gene.lists))^2
x
y <- rep(NA, x)
mx <- matrix(y, ncol=length(gene.lists))
mx
row.names(mx) <- sapply(filelist, basename) %>% stringr::str_remove('.txt$')
colnames(mx) <- sapply(filelist, basename) %>% stringr::str_remove('.txt$')
mx
mx.overlap.count <- mx
# seq_along(gene.lists) # 1 2 3 4 5 6 7 8
for (i in seq_along(gene.lists)) {
g1 <- gene.lists[[i]]
for (j in seq_along(gene.lists)) {
g2 <- gene.lists[[j]]
a <- intersect(g1, g2)
b <- length(a)
mx.overlap.count[j,i] <- b
}
}
mx.overlap.count
View(mx.overlap.count)
#----------------------------------------------------------------------
# looking at gene overlaps in terms of %
#----------------------------------------------------------------------
# modify the code written above by adding the following to the innermost loop:
# get max of g1 and g2
# divide overlap by the max
# calculate the %
Ниже вы увидите код для попытки вычислить значения в процентах -
# seq_along(gene.lists) # 1 2 3 4 5 6 7 8
mx.overlap <- mx
for (i in seq_along(gene.lists)) {
g1 <- gene.lists[[i]]
for (j in seq_along(gene.lists)) {
g2 <- gene.lists[[j]]
a <- intersect(g1, g2)
b <- length(a)
maxN = max(length(g1), length(g2))
mx.overlap[j,i]= 100* b / maxN
mx.overlap.count[j,i] <- b
}
}
mx.overlap.count
View(mx.overlap.count)