Странный результат с параметром сюжета type = "b".Почему это происходит? - PullRequest
1 голос
/ 10 марта 2012

Следующее работает, давая 3 точки, связанные с линией.

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 во фрейме данных?Я не могу найти ссылку на это.

Ответы [ 2 ]

3 голосов
/ 10 марта 2012

Это предназначено, задокументировано и (когда вам нужно построить линии с разрывами в них) желательно поведение функции R's lines(). Со страницы справки ?lines:

Координаты могут содержать значения «NA». Если точка содержит «НС» в значении «x» или «y» он не включается в график, и линии не проводятся к или из таких точек. Таким образом пропущенные значения может использоваться для достижения разрывов в строках.

Чтобы получить линии между точками, просто удалите точки, для которых y имеет значение 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))

plot(y ~ x, data = d, type = "b", subset = !is.na(y))
3 голосов
/ 10 марта 2012

R не отображает точки, которые являются NA, и не отображает связи между точками, которые разделяют их NA.

Если у вас есть NA в вашем векторе, и вы хотите, чтобы R их пропустил, одно из решенийчтобы избавиться от этих строк:

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, поскольку она уже является функцией в R, которая транспонирует матрицы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...