해결된 질문
작성
·
879
1
마지막 시각화 단원에서
문제 1번에 대해서는 답으로 제시해주신
plot(aws[1:200,"TA"], type = "l") 이 방식과 제가 생각한 방식인
plot(aws$TA[1:200],type = "l") 이 방식은 둘 다 동일한 결과를 보여주었습니다.
하지만 문제 2번에서는 제시해주신 방식인
ggplot(data=aws[1:200,], aes(x=1:200, y=TA)) + geom_line() 이 방식만 작동하고 제가 생각한 방식인
ggplot(data = aws, aes(x=1:200, y=TA[1:200])) + geom_line() 은 작동하지 않으면서 아래와 같은 에러 메세지가 나왔습니다.
에러: Aesthetics must be either length 1 or the same as the data (5886): x and y
Run `rlang::last_error()` to see where the error occurred.
제가 생각한 방식이 plot()에서는 돌아가고 ggplot()에서는 돌아가지 않은 이유가 무엇인지 궁금합니다.
답변 1
1
이것은 ggplot2 의 함수 설계 차이 입니다.
aes() 함수 내에 선언하는 것은 명확한 값이거나 특정 변수를 지칭해야 합니다.
그런데 TA[1:200] 의 경우 TA객체의 첫 번째 원소부터 200번째 원소를 지칭한 것과 같게 됩니다.
물론 의도하신 것은 aws 객체의 TA 변수의 원소 일부를 지칭하시려고 하셨을 겁니다.
그나마 의도한 문법으로 코드를 작성할 경우 다음과 같이 작성해볼 수 있습니다.
ggplot() +
geom_line(aes(x = 1:200, y = aws$TA[1:200]))
이와 관련하여 더 알아보시려면 R 문법의 표준평가/비표준평가 를 보셔야 합니다.
감사합니다.