如何将for循环插入pdf和txt文件。

时间:2014-10-21 18:47:33

标签: r loops pdf sink

我正在尝试运行一个for循环,将pdf和文本文件都放到一个单独的文件夹中。我的代码看起来像这样。

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 个答案:

答案 0 :(得分:0)

正如我评论的那样,如果你只是想为每个'Station.x'输出单独的文件,那么你可以适应这样的事情:

data(iris)
lapply(split(iris, iris$Species), 
function(x) write.table(x, file = sprintf('%s.txt', unique(x$Species))))