Error when generating pdf using script in R

graph, pdf, r, statistics

Solution

The line should be

print(p + geom_abline(intercept = inter, slope = slop, colour = "red", size = 1))

In pdf devices, ggplot (and lattice) only writes to file when explicitly printed.

Problem

I'm using R to loop through the columns of a data frame and make a graph of the resulting analysis. I don't get any errors when the script runs, but it generates a pdf that cannot be opened. If I run the content of the script, it works fine. I wondered if there is a problem with how quickly it is looping through, so I tried to force it to pause. This did not seem to make a difference. I'm interested in any suggestions that people have, and I'm also quite new to R so suggestions as to how I can improve the approach are welcome too. Thanks. ``` for (i in 2:22) { # Organise data pop_den_z = subset(pop_den, pop_den[i] != "0") # Remove zeros y = pop_den_z[,i] # Get y col x = pop_den_z[,1] # get x col y = log(y) # Log transform # Regression lm.0 = lm(formula = y ~ x) # make linear model inter = summary(lm.0)$coefficients[1,1] # Get intercept slop = summary(lm.0)$coefficients[2,1] # Get slope # Write to File a = c(i, inter, slop) write(a, file = "C:/pop_den_coef.txt", ncolumns = 3, append = TRUE, sep = ",") ## Setup pdf string = paste("C:/LEED/results/Images/R_graphs/Pop_den", paste(i-2), "City.pdf") pdf(string, height = 6, width = 9) p <- qplot( x, y, xlab = "Radius [km]", ylab = "Population Density [log(people/km)]", xlim = x_range, main = "Analysis of Cities" ) # geom_abline(intercept,slope) p + geom_abline(intercept = inter, slope = slop, colour = "red", size = 1) Sys.sleep(5) ### close the PDF file dev.off() } ```

Original source