Как мне напечатать новый файл из цикла, используя fwrite в R? - PullRequest
0 голосов
/ 20 декабря 2018

мой код ниже печатает мне файл EQTLs.txt, который выглядит следующим образом:

1_949654_A_G_b37 1 949654
1_1212649_T_C_b37 1 1212649
...

library(data.table)

fileNames <- fread("genes_103", header=F)
s=fread("snpPos", header=TRUE)


for (fileName in noquote(fileNames$V1)) {

 if (file.exists(fileName))

  # read original data:
  e <- fread(fileName, header = FALSE,sep = ",",skip=3)

  EQTLs<-s[s$POS==as.numeric(e[tail(which(e$V2 == min(e$V2)), 1),1]),]
#V2 is obs_pval

  # write new data to separate file:
    fwrite(EQTLs,
    "EQTLs.txt",
    append = TRUE,
    sep = " ",
    row.names = FALSE,
    col.names = FALSE)
}

Я хотел бы дополнительно для этой функции fwrite выводить имена моих файлов в переменной fileName.

Мой fileName будет выглядеть так: ENSG00000163995.14.CovRE.pval.txt

Таким образом, в идеале одна строка вывода EQTLs.txt должна выглядеть так:

ENSG00000163995.14.CovRE.pval.txt     1_949654_A_G_b37 1 949654
ENSG00000219665.4.CovRE.pval.txt      1_1212649_T_C_b37 1 1212649
    ...

Как этого добиться с помощью этой функции fwrite?

Спасибо

1 Ответ

0 голосов
/ 20 декабря 2018

Вы можете присвоить имя файла объекту EQTLs перед записью в файл

for (fileName in noquote(fileNames$V1)) {

 if (file.exists(fileName))

  # read original data:
  e <- fread(fileName, header = FALSE,sep = ",",skip=3)

  EQTLs<-s[s$POS==as.numeric(e[tail(which(e$V2 == min(e$V2)), 1),1]),]  #V2 is obs_pval
  EQTLs$filename <- fileName #this will add the file name to EQTLs

  # write new data to separate file:
    fwrite(EQTLs[, c(4,1,2,3)],
    "EQTLs.txt",
    append = TRUE,
    sep = " ",
    row.names = FALSE,
    col.names = FALSE)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...