[R] Run function several times changing only one argument - without a loop

David Winsemius dwinsemius at comcast.net
Mon Feb 20 15:16:03 CET 2012


On Feb 20, 2012, at 5:04 AM, Marion Wenty wrote:

> Dear people,
>
> I created a plot which looks like this:
>
> Ee1<-matrix(c(88,86,74,62,41),ncol=5)
> colnames(Ee1)<- 
> c 
> ("Lehrer 
> ","Lehrerinnen","Klassenkollegen","Klassenkolleginnen","Geschwister")
> par(las=1)
> par(mar=c(5,13,4,2))
> barplot(Ee1,horiz=T,col="grey85",border="NA",xlim=c(0,100),axes=F)
> axis(2,pos=10, tick=T, tcl=F, labels=F,col="white")
> axis(2,pos=20, tick=T, tcl=F, labels=F,col="white")
> axis(2,pos=30, tick=T, tcl=F, labels=F,col="white")
> axis(2,pos=40, tick=T, tcl=F, labels=F,col="white")
> axis(2,pos=50, tick=T, tcl=F, labels=F,col="white")
> axis(2,pos=60, tick=T, tcl=F, labels=F,col="white")
> axis(2,pos=70, tick=T, tcl=F, labels=F,col="white")
> axis(2,pos=80, tick=T, tcl=F, labels=F,col="white")
> axis(2,pos=90, tick=T, tcl=F, labels=F,col="white")
>
> Now I would like to shorten the whole thing - namely use only one  
> step to
> create the 9 axes without having to use a loop.

See if grid() is helpful:

barplot(Ee1,horiz=T,col="grey85",border="NA",xlim=c(0,100),axes=F)
grid(nx=9, ny=NA, col="white")

Somehow using axis to draw elements inside a graph seems "wrong",  
especially when you are using it for what is basically  side-effect as  
you have been attempting. Could also have used abline which accepts a  
vector for its v argument.

 > barplot(Ee1,horiz=T,col="grey85",border="NA",xlim=c(0,100),axes=F)
 > abline(v=seq(10,90,by=10), col="white")


>
> In general, I would be interested if there is a way to use a function
> several times changing only one argument, without having to use a  
> loop.

A large number of functions will offer that facility using seq() as  
the functional input argument.
>
> Does anyone know how to do that.
>
> Marion
>
> 	[[alternative HTML version deleted]]

You might consider working in the settings for your mail client. I  
know that gmail offers that option.

-- 
David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list