Вам нужно начать цикл над хромосомами в тот момент, когда вы генерируете подмножество для chr1.
Чтобы зациклить все хромосомы, вы можете попробовать это.Я немного адаптировал ваш код.
dart <- read.csv("dartnonaR.csv") ## read data
savepdf = TRUE
for ( k in 1:21){ ## start loop over chromosomes
chr <- which(dart[, 1] == k); ## assign data from col 1 to chr if equal to k
mpos <- dart[chr, 2:3 ]; ## create mpos
dart_chr <- dart[chr, ]; ## create dart_chr from dart
dart_chr2 <- t(dart_chr[, -c(1, 2, 3)]); ## get genomic data and transpose
r2 <- (cor(dart_chr2))^2; ## calculate r-square data
rownames(r2) <- mpos$MARKERS; ## Add rownames based on marker names
r2v <- NULL; ## initialize values
distance <- NULL; ## initialize values
for( i in 1:length(r2[,1])){
for (j in (i+1):length(r2[1,])){ ## probably, could also be length(r2[1,]) + 1 , I'm not sure.
r2v <- c(r2v, r2[i, j])
distance <- c(distance, abs(mpos[mpos$MARKERS == rownames(r2)[i], 2] - mpos[mpos$MARKERS == rownames(r2)[j], 2]) )
cat(i, j, "\n")
}
};
if(savepdf){
pdf(file = paste('ld_decay_chr',k,'.pdf', sep = ''))
plot(distance, r2v, xlab = "Distance in cM", ylab = "LD in r2", main = paste('LD Decay chromosome', k));
dev.off()
}
if(!savepdf){
plot(distance, r2v, xlab = "Distance in cM", ylab = "LD in r2", main = paste('LD Decay chromosome', k));
}
}