Обработка пустого фрейма данных R на веб-странице JSP / Rserve

Используя веб-страницу JSP и Rserve, я получаю данные из базы данных MySQL и использую фрейм данных R для хранения данных. Это отлично работает, и графики идеальны.

Однако, если запрос к базе данных ничего не возвращает, фрейм данных становится пустым и выдает ошибку при попытке построения графика.

Я хочу перенаправить на другую страницу JSP, которая затем отобразит ошибку, но я не уверен, как это сделать.

Я нашел этот код R (то, что он делает, было чисто для целей тестирования), который сообщает мне, пуст ли фрейм данных или нет, но как я могу затем включить Java (или что-то еще) для перенаправления страницы?

if (nrow(df) != 0) { 
      df
   } else {
      df <- "Empty"
      df
  }

Изменить: мне удалось зайти так далеко:

c.eval("if(nrow(df) != 0){ print(ggplot(df, aes(x=Date, y=UID))+geom_point(shape=1)) }"
+"else { print(\"Failed\") }");

«Неудачный» не печатается (на самом деле я этого не ожидал), но, как сказано выше в else, я бы хотел перенаправить. Есть мысли о том, как это возможно?


person Dom Abbott    schedule 25.06.2014    source источник
comment
посмотрите, указывает ли это в правильном направлении (stackoverflow.com/questions/4967482/ и (stackoverflow.com/questions/6068891/)   -  person Silence Dogood    schedule 25.06.2014
comment
Спасибо за ссылки, но я знаю, как перенаправить в jsp / java. Проблема, с которой я столкнулся, заключается в том, чтобы включить этот код в код R, потому что (насколько мне известно) вы не можете просто поместить java-код в код R. Хотя ссылка о разнице между перенаправлением и переадресацией может быть бесполезной в другой ситуации, которая у меня есть!   -  person Dom Abbott    schedule 25.06.2014


Ответы (1)


А просто try{} catch{} проблему решил! Не знаю, почему я не подумал об этом раньше.

Так что вместо:

c.eval("if(nrow(df) != 0){ print(ggplot(df, aes(x=Date, y=UID))+geom_point(shape=1)) } else { print(\"Failed\") }");

Я использовал это:

try {
        c.eval("print(ggplot(df, aes(x=Date, y=UID)) + geom_point(shape=1))"); // point graph
        System.out.print("Success");
    } catch (Exception e) {
        out.print(e.getMessage()); 
        System.out.print("Failed");
    }
person Dom Abbott    schedule 25.06.2014