2017-12-29 30 views
-1

함수를 소싱 할 때 R의 인쇄 동작에 어려움을 겪고 있습니다. ggplot을 생성하고 그 플롯을 나중에 저장하기 위해 순서로 반환하는 함수를 작성하고 싶습니다.소스 함수에서 ggplot2 그림을 반환하십시오.

그래서 내 문제가 발생 플롯이 비어 있으며, 함수의 외부뿐만 아니라 빈 플롯을 생성 인쇄 (p)를 호출하는 것입니다이

file: func.R 

make_plot <- function(data){ 
p <- ggplot(...) 
print(p) 
return(p) 
} 


source('func.R') 
p <- make_plot(data) 
ggsave('somewhere.png', plot=p) 

처럼 보일 것이다.

함수 내부에서 코드를 대화 형으로 실행하면 모든 것이 정상입니다.

아이디어가 있으십니까?

+1

make_plot에서 사용한 데이터를 제공 할 수 있습니까? 또한, 그 함수에서 ggplot에 대한 호출은 실제로 ggplot (...)입니까? 또는 그것에 더 있습니까? – jrlewi

+3

문제를 재현 할 수 없습니다. 함수의'ggplot' 행을'p <- ggplot (data, aes (x = wt, y = mpg)) + geom_point()'로 바꾸면'p = make_plot (mtcars)'가 정상적으로 작동합니다. 문제를 재현 할 수있는 충분한 코드를 포함하십시오. – Gregor

+0

RStudio를 사용하고 있습니까? R 세션을 다시 시작한 후에도 함수 내부의 코드가 여전히 작동합니까? –

답변

0

빠른 응답에 감사드립니다. 나는 매우 죄송하지만, 오류가 모든 광산이었다, 실제 코드는 그래서 재곡 그래픽 객체가 정말 비어

file: func.R 
    make_plot <- function(data){ 
    p <- ggplot(...) 
    p + geom_vline ... 
    print(p) 
    return(p) 
    } 

    source('func.R') 
    p <- make_plot(data) 
    ggsave('somewhere.png', plot=p) 

같은 것을 보았다. 분명히 했어야합니다

p <- ggplot(...) 
p <- p + geom_vline ... 

대단히 감사합니다!