Super, thanks a lot!! I didn't think about using names()
Ivan

Le 1/19/2010 17:35, Carlos Ortega a écrit :
> OK.
> For the names of the variables you can include this code in the loop 
> (variable nv):
>
>
> seq.dat<-c(seq(7,10,1), seq(12,17,1))
> for( i in 1:length(seq.dat) ) {
>
> j<-seq.dat[i]
> nv<-names(ssfa)[j]
>
> with( ssfa, twoplots(TO_POS, ssfa[[j]], nv) )
> }
>
> And this modification in the function (nm):
>
> #defines the function for the plots (as written by Duncan Murdoch)
> twoplots <- function(x, y,nm) {
>  ylab <- deparse(substitute(y))  # get the expression passed as y
>  xlab <- deparse(substitute(x))  # get the expression passed as x
>  hist(y, main=paste("Histogram of ", nm), xlab=ylab)
>  boxplot(y ~ x,  main=paste("Boxplot of", ylab, "by", xlab), xlab=xlab,
> ylab=ylab)
> }
>
> Regards,
> Carlos.
>
>
> On Tue, Jan 19, 2010 at 5:21 PM, Ivan Calandra 
> <ivan.calan...@uni-hamburg.de <mailto:ivan.calan...@uni-hamburg.de>> 
> wrote:
>
>     Thank you for your answer, I got the second part!
>     Ivan
>
>
>     Le 1/19/2010 17:03, Carlos Ortega a écrit :
>>     Hello,
>>
>>     You can loop in the subset you need by storing in a variable and
>>     looping on that variable with indexes:
>>
>>     seq.dat<-c(seq(7,10,1), seq(12,17,1))
>>     for( i in 1:length(seq.dat) ) {
>>
>>     j<-seq.dat[i]
>>     with(ssfa, twoplots(TO_POS, ssfa[[j]]))
>>
>>     }
>>
>>     Regards,
>>     Carlos.
>>
>>     On Tue, Jan 19, 2010 at 4:53 PM, Ivan Calandra
>>     <ivan.calan...@uni-hamburg.de
>>     <mailto:ivan.calan...@uni-hamburg.de>> wrote:
>>
>>         Hi again!
>>
>>         I feel like I cannot do anything by myself but I would now
>>         like to plot
>>         for all numeric variables I have (14 of them). I wanted to
>>         add a loop then.
>>         The code is:
>>
>>         ------
>>         #defines the function for the plots (as written by Duncan
>>         Murdoch)
>>         twoplots <- function(x, y) {
>>          ylab <- deparse(substitute(y))  # get the expression passed as y
>>          xlab <- deparse(substitute(x))  # get the expression passed as x
>>          hist(y, main=paste("Histogram of ", ylab), xlab=ylab)
>>          boxplot(y ~ x,  main=paste("Boxplot of", ylab, "by", xlab),
>>         xlab=xlab,
>>         ylab=ylab)
>>         }
>>
>>         #run the function on ssfa with TO_POS as x and ssfa[[i]] as
>>         y, the
>>         numerical variables are from column 7 to 21
>>         for (i in 7:21) {
>>           with(ssfa, twoplots(TO_POS, ssfa[[i]]))
>>         }
>>         ------
>>
>>         I have therefore two questions:
>>         - The code above works fine, but in the titles I get
>>         "Histogram of
>>         ssfa[[i]]" instead of "Histogram of 'variable name'"
>>         - What if I don't want to loop on all variables, but for example,
>>         variables (=columns) 7 to 10 and 12 to 17? How do I give such
>>         breaks and
>>         ranges?
>>         I admit I'm thinking about it since yesterday and I don't
>>         have a clue...
>>
>>         I hope you will be able to help me.
>>         Thanks in advance,
>>         Ivan.
>>
>>
>>
>>         Duncan Murdoch a écrit :
>>         > On 18/01/2010 9:02 AM, Ivan Calandra wrote:
>>         >> Hi everybody!
>>         >>
>>         >> I'm trying to write a script to plot a histogram, a
>>         boxplot and a
>>         >> qq-plot (under Windows XP, R2.10 if it matters)
>>         >>
>>         >> What I want to do: define the variables (x and y) to be
>>         used at the
>>         >> very beginning, so that I don't have to change all
>>         occurrences in the
>>         >> script when I want to plot a different variable.
>>         >>
>>         >> The dataset is called "ssfa". TO_POS is a categorical variable
>>         >> containing the tooth position for each sample. Asfc is a
>>         numerical
>>         >> variable. In my dataset, I have more variables but it wouldn't
>>         >> change; I want to plot one numeric vs one category. Do I
>>         need to
>>         >> supply some data? I don't think it's really necessary but
>>         let me know
>>         >> if you would like to.
>>         >>
>>         >> The code of what I do up to now:
>>         >> ---
>>         >> x <- ssfa$TO_POS
>>         >> y <- ssfa$Asfc
>>         >> hist(y, main="Histogram of Asfc", xlab="Asfc")
>>         >> boxplot(y~x, main="Boxplot of Asfc by TO_POS", xlab="TO_POS",
>>         >> ylab="Asfc")
>>         >> ---
>>         >>
>>         >> I would like something like: hist(y, main="Histogram of
>>         y", xlab="y")
>>         >> but that will add "Asfc" where I write "y".
>>         >> And the same for boxplot(y~x, main="Boxplot of y by x",
>>         xlab="x",
>>         >> ylab="y")
>>         >> I thought about something like:
>>         >> ---
>>         >> cat <- "TO_POS"
>>         >> num <- "Asfc"
>>         >> x <- paste("ssfa$", "TO_POS", sep="")
>>         >> y <- paste("ssfa$", "Asfc", sep="")
>>         >> hist(y, main=paste("Histogram of ", cat, sep=""), xlab=num)
>>         >> ---
>>         >> but it doesn't work since y is a string. I don't know how
>>         to get the
>>         >> syntax correctly. I am on the right path at least?!
>>         >
>>         > I think you're on the wrong path.  You want to write a
>>         function, and
>>         > pass either x and y as arguments, or pass a formula
>>         containing both
>>         > (the former is easier).  For example,
>>         >
>>         > twoplots <- function(x, y) {
>>         >  ylab <- deparse(substitute(y))  # get the expression
>>         passed as y
>>         >  xlab <- deparse(substitute(x))  # get the expression
>>         passed as x
>>         >  hist(y, main=paste("Histogram of ", ylab), xlab=ylab)
>>         >  boxplot(y ~ x,  main=paste("Boxplot of", ylab, "by", xlab),
>>         > xlab=xlab, ylab=ylab)
>>         > }
>>         >
>>         > Then
>>         >
>>         > with(ssfa, twoplots(TO_POS, Asfc))
>>         >
>>         > will give you your plots.
>>         >
>>         > Duncan Murdoch
>>         >
>>
>>                [[alternative HTML version deleted]]
>>
>>
>>         ______________________________________________
>>         R-help@r-project.org <mailto:R-help@r-project.org> mailing list
>>         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.
>>
>>
>
>     -- 
>     Ivan CALANDRA
>     PhD Student
>     University of Hamburg
>     Biozentrum Grindel und Zoologisches Institut und Museum
>     Martin-Luther-King-Platz 3
>     D-20146 Hamburg, GERMANY
>     +49(0)40 42838 6231
>     ivan.calan...@uni-hamburg.de <mailto:ivan.calan...@uni-hamburg.de>
>
>
>
>     **********
>     http://www.for771.uni-bonn.de
>     http://webapp5.rrz.uni-hamburg.de/mammals/eng/mitarbeiter.php
>          
>
>

-- 
Ivan CALANDRA
PhD Student
University of Hamburg
Biozentrum Grindel und Zoologisches Institut und Museum
Martin-Luther-King-Platz 3
D-20146 Hamburg, GERMANY
+49(0)40 42838 6231
ivan.calan...@uni-hamburg.de


**********
http://www.for771.uni-bonn.de
http://webapp5.rrz.uni-hamburg.de/mammals/eng/mitarbeiter.php


        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
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.

Reply via email to