[R] simple linear plots with a loop

Jim Lemon jim at bitwrit.com.au
Mon Apr 7 04:00:46 CEST 2014


On 04/07/2014 11:07 AM, Kristi Glover wrote:
> Hi R users,
> I was trying to plot with  a fixed y with many independet variables. I tried this loop but it did not work. any suggestions? I wanted to make 9 plots. This is a just an example data.
>
> dat1<- as.data.frame(matrix(sample(1:20,100,replace=TRUE),ncol=10))
> lapply(seq_len(ncol(dat1)),function(i)
> {
> par(mfrow=c(3,3)),
> plot(dat1[,1],dat1[,i+1],
> z[,i]<-lm(dat1[,1]~dat1[,i+1]),
> abline(z),
> summary(z[,i])
> }
>   here first column is dependent variable and other V2 to V10s are independent variables. Also wanted look the summary (linear model) with each variable.
> Thanks for your suggestions
> KG

Hi Kristi,
You can get your plots like this:

for(i in 2:10) {
  plot(dat1[,1],dat1[,i],ylab=paste("dat1[,",i,"]",sep=""))
  z<-lm(dat1[,1]~dat1[,i])
  abline(z)
  print(summary(z))
}

This prints the summaries on the console. If you want to get a listing 
with plots and summaries together, there are a number of ways, one of 
which is the htmlize function in the prettyR package. Save the following 
to a file named kg.R:

#title~Example listing with htmlize
z[[1]]<-NULL
png("kg.png",width=600,height=600)
par(mfrow=c(3,3))
for(i in 2:10) {
  plot(dat1[,1],dat1[,i],ylab=paste("dat1[,",i,"]",sep=""))
  z[[i]]<-lm(dat1[,1]~dat1[,i])
  abline(z[[i]])
}
dev.off()
for(i in 1:9) print(summary(z[[i]]))

then:

library(prettyR)
htmlize("kg.R")

Jim




More information about the R-help mailing list