2014-10-21 3 views
0

Я пытаюсь запустить цикл for, который поглощает как PDF, так и текстовый файл в отдельной папке. Код, который у меня есть, выглядит следующим образом.Как поместить цикл for в pdf и txt-файл.

library(MASS) 
library(QuantPsyc) 

rm(list=ls()) 

dat1<-read.csv("C:/Users/tmf/Desktop/Extract/Childsupdated_NewFiredata.csv") 
stn<-unique(dat1$Station.x) 
Sumdat<-as.data.frame(matrix(nrow=length(unique(stn)),ncol=18)) 
names(Sumdat)<-c("Lake Id","Intercept_Pvalue","Temp_Pvalue","Psum_Pvalue","PCT_Pvalue","DF","Multiple R2","Temp_VariableImp","Psum_VariableImp","Pct_VariableImp","Total_variableImp","ModelP_Value") 

sink() 
for (i in 1:length(stn)) { 
    dat2<-dat1[dat1$Station.x==stn[i],] 
    pdf(paste("C:/Users/tmf/Desktop/Extract/Outputs 17 Oct/PPT_Ha_Sum_100/",stn[i],".pdf",sep="")) 
    sink(paste("C:/Users/tmf/Desktop/Extract/Outputs 17 Oct/PPT_Ha_Sum_100/",stn[i],".txt",sep="")) 
    print(stn[i]) 
} 

К сожалению, цикл остается открытым в конце или результатах в стеке раковины полной ошибки, я предполагаю, что это небольшая проблема, но я надеюсь, что кто-то может мне помочь в установлении ошибки контура или предложить более простой способ петли и утонуть.

Спасибо, Том

+1

Что вы пытаясь достичь? Устройство 'pdf()' предназначено для графики ... И вы никогда не закрываете устройство 'pdf()' или не вызываете 'sink()' еще раз, чтобы закрыть утечку. Попробуйте задать вопрос, который несколько воспроизводится. Если вы просто пытаетесь разделить dat1 на станцию ​​и вывести файл с разделителями, есть намного более простые способы. – oropendola

+0

Внутри вашей петли, когда вы закончите запись в конкретный файл, вы должны запустить 'sink()', чтобы закрыть recirect sink и 'dev.off()', чтобы закрыть открытое графическое устройство PDF. Но, как сказал @oropendola, это странный способ сделать что-то. – MrFlick

ответ

0

Как я заметил, если вы просто пытаетесь выводить отдельные файлы для каждого «Station.x», то вы можете адаптировать что-то вроде этого:

data(iris) 
lapply(split(iris, iris$Species), 
function(x) write.table(x, file = sprintf('%s.txt', unique(x$Species)))) 
Смежные вопросы