Решение уже опубликовано.Вот краткое объяснение того, что происходит в вашем случае:
Чтобы использовать purrr::map
, вы должны передать ему функцию .Но readLines(n = 1)
не функция, это выражение вызова функции .Это совсем другое: в качестве другого примера, sum
- это функция , sum(1 : 10)
- это выражение вызова функции, которое оценивается как целочисленное значение 55. Но sum
, само по себе, оцениваетto… себя: функция, которую можно вызывать (и вы не можете вызвать sum(1 : 10)
: это просто целое число).
Когда вы пишете readLine(n = 1)
, эта функция вызывается сразу, когда map
называется - не по purrr
по данным , а скорее так, как оно есть.То же самое происходит, если вы вызываете readLines(n = 1)
напрямую, не заключая его в map(…)
.
Но это не убивает сеанс R.Вместо этого он говорит readLines
читать из файла, который указан по умолчанию.Глядя на документацию функции, мы видим:
readLines(con = stdin(), n = -1L, ok = TRUE, warn = TRUE,
encoding = "unknown", skipNul = FALSE)
con = stdin()
- по умолчанию readLines
читает со стандартного ввода.В интерактивном терминале это блокируется до тех пор, пока стандартный ввод (то есть интерактивный терминал) не отправит команду «конец файла».В большинстве командных строк вы можете смоделировать это, нажав комбинацию клавиш Ctrl + D .Внутри RStudio поведение может быть другим.