Я должен выполнить эту операцию для 10200 текстовых файлов:
s[s$POS==sample[tail(which(sample$obs_pval == min(sample$obs_pval)), 1),1],])
и записать в один файл вывод каждой операции для каждого файла, который выглядит следующим образом:
ID CHROM POS
20_49715203_T_C_b37 20 49715203
ИтакВ итоге у меня будет один файл с 10200 строками, как указано выше.
Прямо сейчас мой код выглядит так:
fileNames <- lapply(Sys.glob("ENSG*.txt"), read.table)
s=read.table("snpPos", header=TRUE)
for (fileName in fileNames) {
# read original data:
sample <- read.table(fileName,
header = TRUE,
sep = ",")
# create new data based on contents of original file:
allEQTLs <- data.frame(
File = fileName,
EQTLs = s[s$POS==sample[tail(which(sample$obs_pval == min(sample$obs_pval)), 1),1],])
# write new data to separate file:
write.table(allEQTLs,
"EQTLs.txt",
append = TRUE,
sep = ",",
row.names = FALSE,
col.names = FALSE)
}
Сейчас я делаю это стандартным образом, и это занимаетмного времени.Есть ли лучший / более эффективный способ написания этого кода?Следует также отметить, что каждый из этих файлов ENSG * .txt содержит не менее 4000 строк.Самый большой файл имеет 15 миллионов строк.