2015-11-17 9 views
1

Я бегу цикл через тысячи файлов провести Пейджел Lambdaзапись выход из цикла

files <- list.files(pattern=".txt") 
column_names <- data.frame(files = "files", V1 = "V1", Lambda = "lamda", LogL = "logL", LogL10 = "logL10", pvalue = "P") 
write.table(column_names, file = "output.csv", row.names = FALSE, 
      append = FALSE, col.names = FALSE, sep = ", ", quote = TRUE) 

for(i in files){ 
    graph <- read.table(i,header=F) 
    row.names(graph)<-graph[,1] 
    trait<-graph[,-1] 
    names(trait)<-row.names(graph) 
    result <- data.frame(t(c(files[i], phylosig(mytree, trait, method="lambda", test=TRUE, nsim=999)))) 
    write.table(result, file = "output.csv", row.names = FALSE, 
       append = TRUE, col.names = FALSE, sep = ", ") 
} 

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

[1] "some data in x given as 'NA', dropping corresponding species from tree" 
      V1  lambda  logL  logL0 P 
1 EOG7B0F7J.txt 6.610696e-05 -59.62533 -59.62509 1 

мне нужно эти значения, чтобы быть в выходном файле и имени файла ввода (я не установил, что еще в моем цикле, я не знаю, как чтобы сделать это)

Так что я хотел бы, чтобы выход выглядеть следующим образом:

FileA V1  lambda  logL  logL0 P 
FileB V1  lambda  logL  logL0 P 
FileC V1  lambda  logL  logL0 P 

Или что-то подобное - я был бы очень рад, если кто-то может помочь мне с этим

Большое спасибо

+0

Существует опечатка в вашем 'data.frame' линии. –

+0

Правда я исправил это! благодаря – user3188922

ответ

1

Я понял это, вот ответ, если кто-то заинтересован:

column_names <- data.frame(i = "files", Lambda = "lamda", LogL = "logL", LogL10 = "logL10", pvalue = "P") 
          write.table(column_names, file = "output.csv", row.names = FALSE, 
          append = FALSE, col.names = FALSE, sep = ", ", quote = TRUE) 

for(i in files){ 
    graph <- read.table(i,header=F) 
    row.names(graph)<-graph[,1] 
    trait<-graph[,-1] 
    names(trait)<-row.names(graph) 
    result <- data.frame(t(c(i, phylosig(mytree, trait, method="lambda", test=TRUE, nsim=999)))) 
    my.df <- data.frame(lapply(result, as.character), stringsAsFactors=FALSE) 
    write.table(my.df, file = "output.csv", row.names = FALSE, append = TRUE, col.names = FALSE, sep = ", ") 
} 
Смежные вопросы