x와 y

2014-12-06 4 views
1

의 더 게으른 평가는이 예를 취하지 마십시오 qplot :x와 y

require(ggplot2) 
require(gridExtra) 

data(diamonds) 
name <- c("x","y","z") 
l <- list() 
j <- 1 

for (i in 1:(length(name)-1)){ 
    for (k in (i+1):length(name)){ 
    l[[j]] <- qplot(diamonds[,name[i]], diamonds[,name[k]]) + 
     labs(x = name[i], y = name[k]) 
    j <- j + 1 
    } 
} 

do.call(grid.arrange, l) 

그것은 인쇄를 3 번 ​​같은 줄거리 : enter image description here

나는 qplotX을 평가하지 않기 때문에이 생각 바로 Y :

> l[[1]]$mapping 
List of 2 
$ x: language diamonds[, name[i]] 
$ y: language diamonds[, name[k]] 

어떻게 할 나는 바로 name[i]을 평가하게 만들었습니까?

해결 방법은 다음과 같습니다

for (i in 1:(length(name)-1)){ 
    for (k in (i+1):length(name)){ 
    l[[j]] <- ggplot(diamonds, aes_string(x=name[i], y=name[k])) + 
     geom_point() 
    j <- j + 1 
    } 
} 

그러나 전체 데이터 세트 목록 요소에 저장됩니다

> str(l[[1]]$data) 
'data.frame': 53940 obs. of 10 variables: 
$ carat : num 0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ... 
$ cut : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ... 
$ color : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ... 
$ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ... 
$ depth : num 61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ... 
$ table : num 55 61 65 58 58 57 57 55 61 61 ... 
$ price : int 326 326 327 334 335 336 336 337 337 338 ... 
$ x  : num 3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ... 
$ y  : num 3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ... 
$ z  : num 2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ... 
+0

내용 [1] '와'l [2]'**는 ** 그들을 **보고 있거나 독립적으로 플로팅하여 볼 수있는 것과 다르다. 'do.call (grid.arrange, l) '이하는 일에 대해 뭔가있는 것입니다. 나는 아직 그 부분을 알지 못했다. –

+0

'arrangeGrob'에 대한 문서는 도움이되지 않지만'grid.arrange (l [[1], l [[2]]) 명시 적으로 쓰면 잘못된 데이터가 그려지고 더 많은 매개 변수를 입력해야 함을 나타냅니다 함수. 'ggplot2' 또는'grid' 패키지의 툴을 사용하는 것이 가장 좋을 것입니다. –

+0

@CarlWitthoft'print (l [[1]])와'print (l [[2]])'는 같은 줄거리를 만든다; 내가 말할 수있는 한 grid.arrange와 아무런 관련이 없다. – baptiste

답변

4

귀하의 "해결 방법"의 올바른 방법입니다 내 의견. qplot은 편의 기능입니다.이 기능은 전혀 불필요하고 결코 사용하지 않습니다. 당신이 하나를 제공하지 않고이 같은 해결 방법으로 사용할 수 있습니다 경우 문제가 qplot data.frame을 만들 관련이있다 : L '의

require(ggplot2) 
require(gridExtra) 

data(diamonds) 
name <- c("x","y","z") 
l <- list() 
j <- 1 

for (i in 1:(length(name)-1)){ 
    for (k in (i+1):length(name)){ 
    l[[j]] <- qplot(x, y, data = data.frame(x = diamonds[,name[i]], 
              y = diamonds[,name[k]])) + 
     labs(x = name[i], y = name[k]) 
    j <- j + 1 
    } 
} 

do.call(grid.arrange, l) 

enter image description here