2012-03-09 1 views
1

다음과 같이 작동하여 3 점이 선으로 연결됩니다.플롯 옵션 type = "b"인 이상한 결과. 왜 이런 일이 생길까요?

plot(c(1,7,12), c(0,0,2),type="b") 

그러나 이것은 (이 점을 나타내는하지만 연결선없이 경고 나 오류없이)

t<-data.frame(x=1:20,y=c(0,NA, NA, NA, NA, NA, 0, NA, NA, NA, NA, 2, NA, NA, NA, NA, NA, NA, NA, NA)) 
plot(t$x, t$y,type="b") 

왜이 작동하지 않는 이유는 무엇입니까? 데이터 프레임의 NA 때문입니까? 이것에 대한 어떤 언급도 찾을 수없는 것 같습니다.

+0

엑셀, LibreOffice와뿐만 아니라 다른 음모를 꾸미고 소프트웨어가 무리하지 않은, NA를 무시합니다. 이곳을 트롤링하는 대신에 생명을 얻으십시오. 귀하의 의견을 불쾌하다고 표시했습니다. – ECII

+0

@ mdsumner- 조금 까다 롭습니다. NA 플로팅의 문서는? plot이 아니라? lines로 참조되며, 그리워하지 않는 것이 완전히 비합리적이지는 않습니다. 줄거리에서 NA를 만난다면 R이 경고 메시지를 출력 할 것이라고 기대하는 것도 무리가 아닙니다. 그러한 경고는 어떤 점들이 NA가 아니었고 (직접 입력되지 않은 경우) 플롯되지 않았다는 것을 즉각적으로 알 수없는'points()'문장의 경우에 도움이 될 수 있습니다. 그것은 나에게 드라마가 아니다. 그러나 나는 위의 점들이 이것이 '진정한 질문이 아니다'는 것을 의미하는 것을보기 위해 투쟁한다. – thelatemail

답변

3

의도적으로 문서화되어 있으며 (줄 바꿈이 필요한 경우) 바람직한의 R 코드 lines()의 기능입니다. ?lines 도움말 페이지 :

좌표에 'NA'값을 포함 할 수 있습니다. 점에 'NA'가 포함되어있는 경우 'x'또는 'y'값 중 하나가 플롯에서 생략되고 선이 그 점에 그려지지 않습니다. 따라서 누락 된 값 을 사용하여 줄 바꿈을 수행 할 수 있습니다.

는 점 사이 라인이, 단순히 yNA의 값을 갖고있는 점을 제거 얻으려면 :

d <- data.frame(x=1:20, 
       y=c(0,NA,NA,NA,NA,NA,0,NA,NA,NA,NA,2,NA,NA,NA,NA,NA,NA,NA,NA)) 

plot(y ~ x, data = d, type = "b", subset = !is.na(y)) 
3

R은 NA 인 점을 그리지 않으며, 점을 구분하는 점 사이의 연결을 그립니다.

d<-data.frame(x=1:20,y=c(0,NA, NA, NA, NA, NA, 0, NA, NA, NA, NA, 2, NA, NA, NA, NA, NA, NA, NA, NA)) 
d2 <- d[!(is.na(df$y)), ] 
plot(d2$x, d2$y, type="b") 

(또한, t는 R 변수 이후에 대한 좋은 이름이 아닙니다 : 당신이 당신의 벡터에의 NA가 있고 R이 그들을 건너 뛰려면

는, 하나 개의 솔루션은 이러한 행을 제거하는 것입니다 이것은 이미 R에서 행렬을 전치시키는 함수이다).

+4

비평 * 전혀 * 아니지만 사람 (나 포함)은 종종 변수 이름으로't' 또는'c'를 사용하는 것에 대한 경고를 한 다음 데이터 이름을 df로 지정합니다. ** df는 ** 또한 ** 기본 R의 함수입니다 (다시 말하면 포함됩니다). 어쩌면 집으로 가져 오는 메세지는, 여러분이 * t 또는 c 나 df 등의 함수를 이름 짓지 말아야한다는 것입니다. 이름? (적어도 대화식으로 사용하거나'get()'과 같은 함수를 사용하지 않으면 실행중인 함수를 찾을 수 있습니다.) –

+0

하하! 우수한 점 - 실제로'df' 기능을 알지 못했습니다. 또한 파이썬에 익숙해지기 위해 함수와 변수가 R에서 같은 이름을 공유 할 수 있다는 사실을 자주 잊어 버립니다. –

+0

주석 주셔서 감사합니다. 당신은 맞습니다 – ECII

관련 문제