【发布时间】:2014-10-21 18:47:32
【问题描述】:
我正在尝试运行一个 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])
}
不幸的是,循环最终保持打开状态或导致接收器堆栈已满错误,我认为这是一个小问题,但我希望有人可以帮助我修复循环错误或提出更简单的方法循环和下沉。
谢谢, 汤姆
【问题讨论】:
-
你想完成什么?
pdf()设备用于图形...而且您永远不会关闭pdf()设备或再次调用sink()来关闭转移。试着问一个可以重现的问题。如果你只是想按站拆分 dat1 并输出一个分隔文件,还有更简单的方法。 -
在你的循环中,当你完成对一个特定文件的写入后,你应该运行
sink()来关闭接收器重定向和dev.off()来关闭打开的pdf图形设备。但正如@oropendola 所说,这是一种奇怪的做事方式。