Запретить print () выводить индексы списка в R - PullRequest
5 голосов
/ 19 октября 2010

У меня есть список , содержащий шесть графиков, сделанных так:

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)

Если я распечатаю список, print(plist), графики выводятся на графическое устройство, затеминдексы выводятся на консоль, что приводит к следующему:

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

[[1]][[2]]


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

[[2]][[2]]


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

[[3]][[2]]

Поскольку я кодирую веб-приложение, мне нужно довольно строго контролировать вывод на консоль.Пока что единственный способ вывести графики без вывода индексов таков:

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

Есть ли более эффективный способ получить то, что мне нужно?

1 Ответ

5 голосов
/ 19 октября 2010

Вы можете обмануть с помощью capture.output:

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

или без создания новой переменной

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

Кстати, воспроизводимый пример выглядит так:

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)))
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...