readLines с новой версией R

Моя функция:

create_matrix <- function() {
  cat("Write the numbers of vertices: ")
  user_input <- readLines("stdin", n=1)
  user_input <- as.numeric(user_input)
  print(user_input)
  }

С версией 3.5.0 после ввода данных программа не продолжает выполнение. Я вызываю скрипт непосредственно с консоли.

Ответы

Ответ 1

Мои результаты с использованием различных изображений докеров:

  • Этот пример отлично работает с использованием R version 3.4.4 (2018-03-15) -- "Someone to Lean On" от rocker/r-ver:3.4.4.
  • Пример висит, как описано, используя R version 3.5.0 (2018-04-23) -- "Joy in Playing" от rocker/r-ver:3.5.0.
  • Пример зависает, как описано, используя R Under development (unstable) (2018-05-19 r74746) -- "Unsuffered Consequences" от rocker/drd.

Похоже, что изменение, упомянутое в примечаниях к выпуску для версии 3.5.1, не связано. Я отправил свои результаты на r-devel и сообщит результат:

  • Пример отлично работает с использованием R version 3.5.1 (2018-07-02) -- "Feather Spray"
  • Ошибка отмечена как фиксированная. Я могу утверждать, что версия R Under development (unstable) (2018-06-02 r74838) -- "Unsuffered Consequences" работает R Under development (unstable) (2018-06-02 r74838) -- "Unsuffered Consequences".

  • Это считается ошибкой, но неясно, как и когда она будет исправлена.

  • Разумное обходное решение: добавьте конец файла (EOF, Ctrl-D) в дополнение к концу строки.

Ответ 2

TL;DR: используйте stdin()

Он отлично работает, если вы используете stdin() вместо "stdin".... который мы бы рекомендовали в любом случае.

Но, вероятно, для обратной совместимости "stdin", вероятно, тоже должен работать ((или затем сигнализировать предупреждение об устаревании и работать пока)