2010-10-19 29 views
5

Tôi có một list chứa sáu lô, làm như thế này:Ngăn chặn in() từ xuất ra chỉ số danh sách trong 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) 

Nếu tôi in danh sách, print(plist), lô là đầu ra cho thiết bị đồ họa, sau đó các chỉ số được xuất ra giao diện điều khiển dẫn đến điều này:

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

[[1]][[2]] 


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

[[2]][[2]] 


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

[[3]][[2]] 

Vì tôi đang viết mã cho webapp, tôi cần kiểm soát đầu ra của bàn điều khiển khá nghiêm ngặt. Cho đến nay, cách duy nhất tôi có thể xuất ra các ô mà không xuất các chỉ mục như sau:

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

Có cách nào hiệu quả hơn để nhận những gì tôi cần không?

+1

tôi sẽ cố gắng giúp đỡ nhưng bạn có thể * p thuê * cung cấp bộ dữ liệu mockup khép kín? –

+0

@Dirk Eddelbuettel: Tôi đã thêm một tệp được tạo bằng cách sử dụng 'save (plist, file = fn)' Cảm ơn bạn đã xem. – dnagirl

Trả lời

5

Bạn có thể lừa gạt với capture.output:

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

hoặc không tạo ra một mới biến

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

Bằng cách này, ví dụ tái sản xuất giống như thế này:

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

Ví dụ có thể tái tạo sẽ đặt hạt giống, trước tiên;) – Greg

+0

@Greg touché. Tôi nên sử dụng '1: 10';) – Marek

+0

+1 - mẹo hay cho câu trả lời và gợi ý tốt cho ví dụ tái sản xuất. –

Các vấn đề liên quan