2012-07-18 9 views
4

여러 개의 플롯을 생성하기 위해 데이터 프레임과 열을 반복하려고합니다. 데이터 프레임 목록이 있으며 각각에 대해 여러 예측 자 중 하나에 대한 응답을 계획하고 싶습니다. 예를 들어열이있는 ggplot2를 반복합니다.

, 나는 쉽게 데이터 프레임에서 루프 :

df1=data.frame(response=rpois(10,1),value1=rpois(10,1),value2=rpois(10,1)) 
df2=data.frame(response=rpois(10,1),value1=rpois(10,1),value2=rpois(10,1)) 

#Looping across data frames 
lapply(list(df1,df2), function(i) ggplot(i,aes(y=response,x=value1))+geom_point()) 

하지만 데이터 프레임 내에서 컬럼을 통해 루프 문제가 오전 : 나는 그것을 함께 할 수있는 뭔가가 의심

lapply(list("value1","value2"), function(i) ggplot(df1,aes_string(x=i,y=response))+geom_point()) 

을 내가 미학을 대하는 방식.

궁극적으로 데이터 프레임과 열의 모든 조합을 생성하기 위해 함께 lapply 문자열을 지정하고 싶습니다.

도움을 주시면 감사하겠습니다.


EDIT : Joran has it!

aes_string()의 내부
lapply(list(df1,df2), function(x) 
    lapply(list("value1","value2"), function(i) ggplot(x,aes_string(x=i,y="response"))+geom_point())) 
+1

'aes_string'을 사용하는 경우 따옴표로 '응답'을 입력 하시겠습니까? 당신은 두 가지를 섞을 수 없다고 생각합니다. – joran

답변

7

, 모든 변수가 될 필요가 : 여기, 참고로 aes_string

lapply(list("value1","value2"), function(i) ggplot(df1,aes_string(x=i,y="response"))+geom_point()) 

를 사용할 때 하나는 모든 조합을 생성하는 lapply 기능을 속이는되는 따옴표 비 목록 응답을 넣어야합니다 character으로 표시됩니다. "응답"주위에 따옴표를 추가하십시오.

lapply(list("value1","value2"), 
     function(i) ggplot(df1, aes_string(x=i, y="response")) + geom_point()) 
+0

감사! 조란이 1 분 만에 당신을 때렸으나 둘 다 똑같은 대답으로 수렴했습니다. 아주 간단 해요! – jslefche

관련 문제