2012-03-02 4 views
5

많은 유사한 그래프를 작성하고 있으므로 작업을 단순화하는 함수를 작성한다고 생각합니다. 나는 data.frame과 플롯 할 컬럼 이름을 전달하고 싶다. 여기에 내가 시도 것입니다 :data.frames를 처리하는 함수에 열 이름을 전달하는 방법

plot_individual_subjects <- function(var, data) 
{ 
    require(ggplot2) 

    ggplot(data, aes(x=Time, y=var, group=Subject, colour=SubjectID)) + 
    geom_line() + geom_point() + 
    geom_text(aes(label=Subject), hjust=0, vjust=0) 
} 

이제 var가 작동하지 않습니다 문자열 인 경우. ggplot 명령의 일부분을 aes 부분을 y=data[,var]으로 변경하면 클로저를 부분 집합 할 수 없다는 불만이있을 경우 작동하지 않습니다.

그렇다면이 문제를 해결하기위한 올바른 방법/모범 사례는 무엇입니까? data.frames에서 처리하기를 원하는 함수에 쉽고 안전하게 열 이름을 전달할 수 있습니까?

+2

'aes_string'을 대신 사용하십시오. – joran

+1

@ 죠란 당신은 답으로 그것을 게시 할 수도 있습니다. – Justin

답변

10

나쁜 요란, 의견에 대답!

aes_string을 사용하면 변수 이름을 문자열로 전달할 수 있습니다. 특정 경우에는 y 변수 만 수정하려는 것 같으므로 어떤 미학이 어떤 기하학에 매핑되어 있는지 재구성하는 것이 좋습니다. 예를 들어, 다음과 같은 내용 일 수 있습니다.

또는 다른 방법으로 취향에 따라 다를 수 있습니다.

+0

joran, aes()와 aes_string()을 동일한 ggplot 호출에서 혼합하는 방법이 있습니까? 즉, 내 x 축이 항상 모든 기하 구조에 공통적 인 경우 기하 구조 호출에 넣는 것이 어색해 보인다. – KarateSnowMachine

+2

@KarateSnowMachine 동일한 레이어에서 'aes'와 'aes_string'을 모두 사용할 수는 없습니다. 'aes_string'에'x = 'Time'' 등으로 매핑 할 수 있습니다. – joran

+0

감사합니다. – KarateSnowMachine

관련 문제