Для решения только для R, которое оценивает полные выражения, а не отдельные строки, попробуйте это:
sourcep <- function(file){
coms <- parse(file)
for (i in seq_along(coms)){
print(coms[[i]])
eval(coms[[i]],envir=.GlobalEnv)
mess <- paste("Expression",i,"of",length(coms),"parsed. Press <return> to continue.")
cat(mess)
readLines(n=1)
}
}
Вы называете это так, как вы бы назвали source
(хотя это гораздо более простой и не 'т включай любой из его вариантов).По сути, он использует parse
для создания списка проанализированных, но не оцененных выражений из исходного файла, затем перебирает этот список для печати выражения, оценивает его в глобальной среде и затем помещает сообщение, чтобы указать ход выполнения.Последняя строка - это та, которая создает паузу: вызов для чтения одной строки из stdin()
.