Hi, I?ve written a script to run several multivariate statistical analysis automatically. As one result a biplot and screeplot is produced. Now I?d like to display the name of the inputdatset as part of the title of these graphics and I do not want to enter it each time I run the script. How can I extract the name of a dataset? An (shortened) extraction from the script:>Test1 <- function(pri, sec, Pca, Ca, Dca){ >#pri - primary Parameters (biological Dataset (abundances)) >#sec ? secondary Parameters >#Pca, Ca, Dca ? Default=F, If set to TRUE these Methods are activeseveral mathematical Operations>biplot(pri, pc.biplot=T, main=paste(?PCA - ?, ???). Instead of the ??? I? d like to have a variable. For example if Test1(dataset.typ5, sec.typ5, Pca=TRUE) then the title of the plots should be ?PCA ? dataset.typ5? Does anyone know a way? Regards, oli
> I?ve written a script to run several multivariate statistical analysis > automatically. > As one result a biplot and screeplot is produced. > Now I?d like to display the name of the inputdatset as part of the titleof> these graphics and I do not want to enter it each time I run the script. > How can I extract the name of a dataset? > An (shortened) extraction from the script: > > >Test1 <- function(pri, sec, Pca, Ca, Dca){ > >#pri - primary Parameters (biological Dataset (abundances)) > >#sec ? secondary Parameters > >#Pca, Ca, Dca ? Default=F, If set to TRUE these Methods are active > ?several mathematical Operations? > >biplot(pri, pc.biplot=T, main=paste(?PCA - ?, ???)?. > > Instead of the ??? I? d like to have a variable. > For example if > Test1(dataset.typ5, sec.typ5, Pca=TRUE) > then the title of the plots should be > ?PCA ? dataset.typ5?This demonstrates the basic idea: dfr1 <- data.frame(x=1:10, y=runif(10)) dfr2 <- data.frame(x=11:20, y=runif(10)) library(lattice) myplot <- function(dfr) { xyplot(y~x, data=dfr, main=as.character(substitute(dfr))) } myplot(dfr1) myplot(dfr2) Regards, Richie. Mathematical Sciences Unit HSL ------------------------------------------------------------------------ ATTENTION: This message contains privileged and confidential inform...{{dropped:20}}
The usual way of doing this in R functions is via deparse, as in the examples in ?deparse: fd<-function(x) plot(x, main=deparse(substitute(x))) q<-1:10 fd(q) as.character works for simple cases but is probably not the best option. Compare fd(log(q)) with fc<-function(x) plot(x, main=as.character(substitute(x))) fc(log(q)) In the case of an expression, substitute returns a 'call' object, and applying as.character to that returns the individual elements of the call ("log" and "q" in this case) and that is plotted as a multi-line string. deparse() returns a the character string "log(q)" which is what you normally want. Steve E>>> <Richard.Cotton at hsl.gov.uk> 07/05/2009 13:26:46 >>> > I?ve written a script to run several multivariate statisticalanalysis> automatically. > As one result a biplot and screeplot is produced. > Now I?d like to display the name of the inputdatset as part of thetitle of> these graphics and I do not want to enter it each time I run thescript.> How can I extract the name of a dataset? > An (shortened) extraction from the script: > > >Test1 <- function(pri, sec, Pca, Ca, Dca){ > >#pri - primary Parameters (biological Dataset (abundances)) > >#sec ? secondary Parameters > >#Pca, Ca, Dca ? Default=F, If set to TRUE these Methods are active > ?several mathematical Operations? > >biplot(pri, pc.biplot=T, main=paste(?PCA - ?, ???)?. > > Instead of the ??? I? d like to have a variable. > For example if > Test1(dataset.typ5, sec.typ5, Pca=TRUE) > then the title of the plots should be > ?PCA ? dataset.typ5?This demonstrates the basic idea: dfr1 <- data.frame(x=1:10, y=runif(10)) dfr2 <- data.frame(x=11:20, y=runif(10)) library(lattice) myplot <- function(dfr) { xyplot(y~x, data=dfr, main=as.character(substitute(dfr))) } myplot(dfr1) myplot(dfr2) Regards, Richie. Mathematical Sciences Unit HSL ------------------------------------------------------------------------ ATTENTION: This message contains privileged and confidential\ infor...{{dropped:19}}