Ожидание ввода пользователем при запуске R-скрипта в Linux
У меня есть кусок кода, который запрашивает ввод пользователя и отлично работает при запуске кода в Windows. Однако в Linux он выполняет каждую строку, не дожидаясь ввода пользователя.
Я добавил код в отдельную функцию и использовал систему("stty-echo") без успеха. Почему это происходит и что можно сделать ? (команда выполнения: тест Rscript.R)
require(Biostrings)
read_value <- function(prompt_text = "", prompt_suffix = getOption("prompt"),
coerce_to= "character")
{
prompt <- paste(prompt_text, prompt_suffix)
system("stty -echo")
as(readline(prompt), coerce_to)
}
prints<-function()
{ opt<-as.character(readline(prompt = "Enter parameter values: "))
system("stty -echo")
i<-1
while ((i<=5))
{ if (i==1)
{ expr.filename <- as.character(readline(prompt = "Expression file name: "))
tryCatch( {expr.file<-read.table(expr.filename)},error=function(e)
{print("ERROR : Enter valid filename!") return })
}
if (i==2)
{ system("stty -echo")
fasta.filename <- as.character(readline(prompt = "Fasta file name: "))
tryCatch( {sequence_data<-read.DNAStringSet(fasta.filename)},error=function(e)
{print("ERROR : Enter valid filename!") return })
}
#missing piece of code
i<-i+1
}
1 ответов
вы можете рассмотреть возможность использования readLines
от "stdin". Функция prompt предназначена для документирования наборов данных.
cat("Please enter a file name ...")
fil <- readLines(con="stdin", 1)
cat(fil, "\n")
Сохранить как filnam.р. ... Использовать:
user-linux-prompt$ Rscript filnam.r