Hi, My hunch is that you need to add print(plout) before you call dev.off(). See https://stackoverflow.com/a/39853861
Try that and let me know if that works. If not, I'll take a closer look later. Best, Josh On Wed, Oct 5, 2022, 1:40 AM Deramus, Thomas Patrick <tdera...@partners.org> wrote: > Sorry to cross-post on Stackoverflow and here but I'm having some > difficulty. > > https://stackoverflow.com/questions/73942794/still-getting-error-in-ect-plot-new-has-not-been-called-yet-despite-grouping > > Trying to make a nested loop that produces PDFs off different graphs, one > for ACF/PACF diagnostics and another for the actual data, based on some > time-series analyses I'm doing. > > Unfortunately, I keep getting the dreaded: Error plot.new has not been > called yet > > The code is meant to write a PDF containing the ACF and PACF graphs, then > do some analyses on the timeseries, and then make a separate PDF containing > a plot describing the timeseries based on the p-values of each test for > each individual. > > library(plyr) > library(dplyr) > library(ggplot2) > library(Kendall) > library(lubridate) > library(xts) > library(TTR) > library(trend) > library(forecast) > library(openxlsx) > > Game_Metrics_Word_Task <- > read.xlsx("GamePack_Analytics_ALL_TIME_Short.xlsx", "Boggle") > Game_Metrics_Word_Task <- Game_Metrics_Word_Task %>% filter(grepl('1440', > StudyId)) > Game_Metrics_Word_Task$DeviceTime <- > ymd_hms(Game_Metrics_Word_Task$DeviceTime, tz = "America/New_York") > Game_Metrics_Word_Task <- > Game_Metrics_Word_Task[!duplicated(Game_Metrics_Word_Task[1:2,])] > > Participant_Word_Task <- > split(arrange(Game_Metrics_Word_Task,StudyId,DeviceTime), > arrange(Game_Metrics_Word_Task,StudyId,DeviceTime,StudyId,DeviceTime)$StudyId) > > WordFrame <- data.frame(Participant = c(0), Task = c(0), MannKendall_Tau = > c(0), MannKendall_P = c(0), Sen_Slope_Value = c(0), Sen_Slope_Pval = c(0), > Pettitts_CIV = c(0), Pettitts_Pval = c(0), ARIMA_Model = c(0), > Time_to_Petit = c(0), Number_of_Trials_to_Pettitt = c(0), > Playtime_to_Petit_seconds = c(0), Time_Start_to_end_days = c(0), > Number_of_Total_Trials = c(0), Total_Playtime_seconds = c(0), > Learning_rate_days = c(0), Learning_rate_seconds = c(0), Learned_Task = > c(0)) > > for (i in 1:length(Participant_Word_Task)){ > success_series <- xts(filter(Participant_Word_Task[[i]], GameEndReason > == "TIMER_UP")$NumberOfSuccesfulWords , > order.by=as.POSIXct(filter(Participant_Word_Task[[i]], > GameEndReason == "TIMER_UP")$DeviceTime)) > original_series <- > xts(Participant_Word_Task[[i]]$NumberOfSuccesfulWords, order.by > =as.POSIXct(Participant_Word_Task[[i]]$DeviceTime)) > success_decomp <- ts(success_series, frequency = > nweeks(success_series)) > original_decomp <- ts(original_series, frequency = > nweeks(success_series)) > > > pdf(paste("Word_Task_Autocorrelation_plots_for_subject_",unique(Participant_Word_Task[[i]]$StudyId),".pdf" > ,collapse = NULL, sep = "")) > par(mfrow=c(1,2)) > Autocorrelationplot <- acf(success_decomp, main=paste("")) > PartialAutocorrelationplot <- pacf(success_decomp, main=paste("")) > mtext(paste("Word Task Auto and Partialauto correlations for subject > ",unique(Participant_Word_Task[[i]]$StudyId)), side = 3, line = -3, outer = > TRUE) > dev.off() > > AutomatedArimaoutputs <- auto.arima(success_decomp) > p <- length(AutomatedArimaoutputs$model$phi) > #AR component > q <- length(AutomatedArimaoutputs$model$theta) > #MA component > d <- AutomatedArimaoutputs$model$Delta > #order of difference > WordFrame[i,1] <- unique(Participant_Word_Task[[i]]$StudyId) > WordFrame[i,2] <- "Word" > WordFrame[i,3] <- MannKendall(success_decomp)$tau[1] > WordFrame[i,4] <- MannKendall(success_decomp)$sl[1] > WordFrame[i,5] <- sens.slope(success_decomp)$estimates > WordFrame[i,6] <- sens.slope(success_decomp)$p.value > WordFrame[i,7] <- pettitt.test(success_decomp)$estimate > WordFrame[i,8] <- pettitt.test(success_decomp)$p.value > WordFrame[i,9] <- paste("ARIMA(",p,",",q,",",d,")", collapse = NULL, > sep = "") > WordFrame[i,10] <- > difftime(time(success_series[WordFrame[i,7]]),time(original_series[1])) > WordFrame[i,11] <- tail(which(grepl(success_series[WordFrame[i,7]], > original_series)), n=1) > WordFrame[i,12] <- > sum(Participant_Word_Task[[i]]$TotalDuration[1:WordFrame[i,11]])-sum(Participant_Word_Task[[i]]$TotalTimePaused[1:WordFrame[i,11]]) > WordFrame[i,13] <- > difftime(time(original_series[length(original_series)]),time(original_series[1])) > WordFrame[i,14] <- length(original_series) > WordFrame[i,15] <- > sum(Participant_Word_Task[[i]]$TotalDuration[1:length(original_series)])-sum(Participant_Word_Task[[i]]$TotalTimePaused[1:length(original_series)]) > > > simplemovingaverage <- SMA(original_series, n = > nweeks(original_series)) > > if (WordFrame[i,4] <= 0.05 & WordFrame[i,6] <= 0.05 & WordFrame[i,8] > <= 0.05){ > { > > pdf(paste(WordFrame[i,1],"_Word_Task_Acquisition.pdf",collapse = NULL, sep > = "")) > plout <- plot(original_series,type='l',col='blue',xlab="Date > of Play",ylab="Number of Successful Words") > lines(simplemovingaverage,type='l',col='red') > title(paste("Word Task Acquisition for Subject", > WordFrame[i,1])) > abline(v = index(original_series[WordFrame[i,7]]),lty=2, > col='green', lwd=3) > dev.off() > } > WordFrame[i,18] <- T > WordFrame[i,16] <- (1-(WordFrame[i,10]/WordFrame[i,13])) > WordFrame[i,17] <- (1-(WordFrame[i,12]/WordFrame[i,15])) > } else { > { > > pdf(paste(WordFrame[i,1],"_Word_Task_Acquisition.pdf",collapse = NULL, sep > = "")) > plout <- plot(original_series,type='l',col='blue',xlab="Date > of Play",ylab="Number of Successful Words") > lines(simplemovingaverage,type='l',col='red') > title(paste("Word Task Acquisition for Subject", > WordFrame[i,1])) > dev.off() > } > WordFrame[i,18] <- F > WordFrame[i,16] <- 0 > WordFrame[i,17] <- 0 > } > } > > It will work just fine if I run the lines individually (e.g. set i = 1, 2, > ect), and if I comment out abline and title (lines seems to work fine). But > it will throw the error everytime I try to run the loop without these > commented. > > Have tried just about everything I could find on the Stack forums to run > everything as a single argument and I'm just not sure what is wrong with it. > > dev.list() spits out: > > pdf > 2 > following the error. > > With abline and title commented out and lines run individually it's NULL. > > Happens in both RStudio > > 2022.07.2+576 "Spotted Wakerobin" Release > (e7373ef832b49b2a9b88162cfe7eac5f22c40b34, 2022-09-06) for Ubuntu Bionic > Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) > QtWebEngine/5.12.8 Chrome/69.0.3497.128 Safari/537.36 > > And R: > > platform x86_64-pc-linux-gnu > arch x86_64 > os linux-gnu > system x86_64, linux-gnu > status > major 4 > minor 2.1 > year 2022 > month 06 > day 23 > svn rev 82513 > language R > version.string R version 4.2.1 (2022-06-23) > nickname Funny-Looking Kid > > > My OS: > PRETTY_NAME="Debian GNU/Linux 11 (bullseye)" > NAME="Debian GNU/Linux" > VERSION_ID="11" > VERSION="11 (bullseye)" > VERSION_CODENAME=bullseye > ID=debian > HOME_URL="https://www.debian.org/" > SUPPORT_URL="https://www.debian.org/support" > BUG_REPORT_URL="https://bugs.debian.org/" > No LSB modules are available. > Distributor ID: Debian > Description: Debian GNU/Linux 11 (bullseye) > Release: 11 > Codename: bullseye > Icon name: computer-desktop > Chassis: desktop > Machine ID: 053ebf23707f49c8ad4e0684f4cf19d3 > Boot ID: d0e6294d3b944286bef10e76c21e6401 > Operating System: Debian GNU/Linux 11 (bullseye) > Kernel: Linux 5.10.0-18-amd64 > Architecture: x86-64 > > > Any suggestions would be greatly appreciated. > > -- > > Thomas DeRamus (He/Him/His) > > Data Analyst > > Massachusetts General Hospital Brigham > > Alzheimer’s Clinical & Translational Research Unit > > 149 13th Street > > Charlestown, MA 02129 > > Phone: 205-834-5066 > > Email: tdera...@partners.org<mailto:tdera...@partners.org>, > tpdera...@gmail.com<mailto:tpdera...@gmail.com> > > > [ > https://ci3.googleusercontent.com/mail-sig/AIorK4we2sU30P2HyfDQF5hpEjYTt-9FTBK7cAVsP7EenrZ0nsKCf48fuYMtElj6Szn_2fpSPWr66eQ][https://ci3.googleusercontent.com/mail-sig/AIorK4yyY0DlImU0UONJrHTbPc5T3lJj8Kmu8SbDKJJ3XjcX6CgvVsvSueYKwficYFz4zXt6fZV8YIY > ] > > “If knowledge can create problems, it is not through ignorance that we can > solve them.” > > —Issac Asimov > The information in this e-mail is intended only for th...{{dropped:22}} ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.