2010-10-19 17 views
5

Ich habe ein list enthält sechs Plots, wie folgt hergestellt:Prevent print() ausgibt Liste Indizes in R

voi=c('inadist','smldist','lardist') 

plist <- llply(voi, 
    function(v,df,s) { 
     list( 
      assign(
       paste(v,'.violin'), 
       bwplot(groupname~df[,which(colnames(df)==v)]|fCycle*fPhase, 
        data=df, 
        groups=groupname, col=rainbow(1), box.ratio=3, 
        main=paste('Distribution of ', v, ' by Treatment and Cycle'), 
        sub=s, xlab=v, panel=panel.violin)), 
      assign(
       paste(v,'.hexbin'), 
       hexbinplot(df[,which(colnames(df)==v)]~starttime|groupname, 
        data=df, xlab='Time(s)',main= paste('Distribution of ',v,' by Treatment'), 
        sub=s,ylab=v, aspect=0.5, colramp=redgrad.pal, layout=c(2,4))) 

      ) 
    },data,meta$exp_name) 

Wenn ich die Liste zu drucken, print(plist), die Plots werden an die Graphikeinrichtung, dann die Indizes sind auf die Konsole in dem resultierenden:

[[1]] 
[[1]][[1]] 

[[1]][[2]] 


[[2]] 
[[2]][[1]] 

[[2]][[2]] 


[[3]] 
[[3]][[1]] 

[[3]][[2]] 

Weil ich ein Webapp bin Codierung, ich brauche unbedingt ganz Konsolenausgabe zu steuern. Bisher ist der einzige Weg, ich ausgeben kann die Parzellen ohne die Indizes zur Ausgabe das ist wie:

for(p in plist) 
    for(i in p) 
     print(i) 

Gibt es eine effizientere Art und Weise zu bekommen, was ich brauche?

+1

I Ich werde versuchen zu helfen, aber können Sie * p lease * bietet einen eigenständigen Mock-up-Datensatz? –

+0

@Dirk Eddelbuettel: Ich habe eine Datei hinzugefügt, die mit 'save (plist, file = fn) erstellt wurde' Danke, dass du es dir angesehen hast. – dnagirl

Antwort

5

Sie können mit capture.output betrügen:

dummy <- capture.output(print(plist)) 

oder ohne eine neue Variable

Schaffung
invisible(capture.output(print(plist))) 

By the way, reproduzierbares Beispiel wie folgt aussehen:

require(lattice) 
plist <- list(
    list(bwplot(rnorm(10)),bwplot(rnorm(10))), 
    list(bwplot(rnorm(10)),bwplot(rnorm(10))), 
    list(bwplot(rnorm(10)),bwplot(rnorm(10))) 
) 
+0

Ein reproduzierbares Beispiel würde zuerst einen Seed setzen;) – Greg

+0

@Greg touché. Ich sollte '1: 10' verwenden;) – Marek

+0

+1 - guter Trick für die Antwort, und netter Hinweis für das reproduzierbare Beispiel. –