У меня есть data.table (dt), который выглядит так -
unigene s.start s.end
1: 70333442 25564 25601
2: 47901818 151379 151340
3: 22804559 237716 237685
4: 51650325 370382 370338
5: 45665472 691509 691553
6: 67902793 885586 885616
7: 107540914 909650 909617
8: 22777344 1234774 1234752
9: 103835796 1421236 1421263
10: 46208443 1595024 1595059
У меня есть этот код с вложенными циклами for, который по какой-то причине заполняет data.table намного медленнее, чем когда онбыл data.frame.Как я могу заставить его работать быстрее?Какие части моего кода замедляют его?
paretoPoints <- data.table(
l = integer(),
c = integer(),
u = integer())
for (m in 1:nrow(dt)) {
for (n in 1:nrow(dt)) {
if (m > n) {
a <- as.numeric(dt[m, 4])
b <- as.numeric(dt[n, 3])
c <- as.numeric(abs(length(unique(dt[n:m]$gene))))
s <- head(which(dt2$s == as.numeric(b)), 1)
e <- tail(which(dt2$e == as.numeric(a)), 1)
dt3 <- dt2[s:e]
u <- length(unique(dt3$gene))
paretoPoints = rbindlist(list(paretoPoints, list(a-b, c, u)))
}
}
}
Я пытался использовать combn (1: nrow (dt), 2, fun), но это не сработало.