Подавление предупреждений в scale_x_datetime
Это не дубликат, поскольку ни один из методов в этом предполагаемом дубликате не применяется здесь. Никто из них не приводит к тому, что предупреждение исчезнет.
На самом деле я получил ответ от Конрада ниже - используйте suppressMessages
, В ссылке, которая утверждается как возможный дубликат, они предлагают suppressWarnings
, который не работает.
Наконец, выяснив, как заставить R использовать мой часовой пояс на ggplot
ось даты правильно (найдена scale_x_datetime
в посте здесь, до того, как он использовал мой часовой пояс, хотя данные уже были установлены), но теперь он жалуется с предупреждением:
Scale for 'x' is already present. Adding another scale for 'x', which will replace the existing scale.
Это раздражает, потому что я должен делать это много, и не хочу привыкать игнорировать все предупреждения. Как я могу отключить это? Я явно пытался suppressWarnings
(с печатью и без) и options(warn=-1).
- R-версия 3.1.3
- ggplot2_1.0.1
scales_0.2.4
library(lubridate,quietly=T,warn.conflicts=T) library(ggplot2,quietly=T,warn.conflicts=T) library(scales,quietly=T,warn.conflicts=T) sclip.time <- ymd_hms("2014-06-16 00:00:00",tz="US/Pacific") eclip.time <- ymd_hms("2014-06-17 23:59:59",tz="US/Pacific") sdata.time <- ymd_hms("2014-06-16 00:00:00",tz="US/Pacific") edata.time <- ymd_hms("2014-06-17 23:59:59",tz="US/Pacific") xdata <- seq(sdata.time,edata.time,length.out=100) xfrac <- seq(0,4*3.1416,length.out=100) ydata <- pmax(0.25,sin(xfrac)) ydata <- sin(xfrac) ddf <- data.frame(x=xdata,y=ydata) date_format_tz <- function(format = "%Y-%m-%d", tz = "UTC") { function(x) format(x, format, tz=tz) } options(warn=-1) suppressWarnings( ggplot(ddf) + geom_line(aes(x,y),col="blue") + geom_vline(xintercept=as.numeric(sclip.time),color="darkred") + geom_vline(xintercept=as.numeric(eclip.time),color="darkgreen") + xlim(sclip.time,edata.time) + scale_x_datetime( breaks = date_breaks("1 day"), labels = date_format_tz("%Y-%m-%d %H:%M", tz="US/Pacific")) )
2 ответа
Вы должны использовать комбинацию suppressMessages
а также print
как в фрагменте ниже:
suppressMessages(print(
ggplot(ddf) +
geom_line(aes(x,y),col="blue") +
geom_vline(xintercept=as.numeric(sclip.time),color="darkred") +
geom_vline(xintercept=as.numeric(eclip.time),color="darkgreen") +
xlim(sclip.time,edata.time) +
scale_x_datetime( breaks = date_breaks("1 day"),
labels = date_format_tz("%Y-%m-%d %H:%M", tz="US/Pacific"))
))
На самом деле сообщение указывает на проблему со следующим фрагментом кода:
... + xlim(sclip.time,edata.time) +
scale_x_datetime( breaks = date_breaks("1 day"),
labels = date_format_tz("%Y-%m-%d %H:%M", tz="US/Pacific"))
Уже первая команда добавит масштаб, а вторая команда заменит этот масштаб. Таким образом, сообщение сообщает вам, что первая команда не действует.
Вы должны объединить два и добавить ограничения к scale_x_datetime
:
... +
scale_x_datetime(breaks = date_breaks("1 day"),
labels = date_format_tz("%Y-%m-%d %H:%M", tz="US/Pacific"),
limits = c(sclip.time,edata.time))
Чтобы получить то, что вы хотите, используйте функцию "try" с параметром silent=T:
try(silent=T, [R-script])
Обычно это плохая идея, потому что вы становитесь слепыми к ошибкам, которые могут произойти, но если вы действительно уверены в том, что делаете..