2013-12-03 4 views
0
поведение

Очень странно, используя levelplot внутри функции:вызова levelplot из функции

> foo <- function() { require(lattice); levelplot(matrix(rnorm(100),10,10)) } 
> bar <- function() { require(lattice); levelplot(matrix(rnorm(100),10,10)); return(1) } 
> foo() ## graph gets generated 
Loading required package: lattice 
> graphics.off() 
> bar() ## NO GRAPH GETS GENERATED 
[1] 1 

Foo() работает, как ожидалось, и бар() не генерирует никакого сюжета. Есть идеи?

+0

Это дубликат, хотя и тонкий. 'foo' фактически возвращает результат' levelplot', который затем неявно печатается при запуске на консоли. – joran

ответ

0

По умолчанию функция возвращает последний сгенерированный объект. В функции foo, это сюжет. В функции bar, это 1. Телефон:

Если вы хотите сгенерировать участок и вернуть еще один объект, вам нужно создать участок с print.

bar <- function() { 
     require(lattice); 
     print(levelplot(matrix(rnorm(100),10,10))); 
     return(1) } 

При вызове bar(), сюжет будет создан и 1 будут возвращены.

Смежные вопросы