Menjalankan skrip R baris demi baris

8

Saya baru tahu cara menjalankan skrip R dari Konsol R di bawah Windows.

source("arrrFile.R")

Masalahnya adalah, perintah ini berjalan "secara diam-diam". Bagaimana saya bisa menjalankan file perintah-demi-perintah seperti yang saya ketik di konsol?

Fabian
sumber
5
Sudahkah Anda mencoba source("arrFile.R", echo=TRUE)?
caracal
(+1) @caracal, entah bagaimana melewatkan satu opsi itu :) tidak perlu dimasukkan printke file sumber, kecuali beberapa output tidak menarik.
Dmitrij Celov

Jawaban:

16

Anda dapat menggunakan debugger bawaan R; itu harus dipicu pada suatu fungsi, sehingga bungkus kecil diperlukan:

sourceDebugging<-function(f){
 #Function to inject the code to
 theCode<-function(){}
 #Injection
 parse(text=c('{',readLines(f),'}'))->body(theCode)
 #Triggering debug
 debug(theCode)
 #Lift-off
 theCode()
}
sourceDebugging(<file with code>)

Ini cukup berguna untuk debug (memberi Anda kesempatan untuk memeriksa keadaan setelah setiap baris), namun, hanya akan mengevaluasi dalam lingkungan yang baru theCodedaripada sourcestandarnya .GlobalEnv... ini berarti misalnya bahwa variabel yang dibuat di dalam akan hilang kecuali secara eksplisit diglobalisasi.

Opsi dua hanya untuk meniru tulisan dari keyboard dan menekan ENTER ... tetapi seperti yang ditunjukkan caracal ini dapat dicapai hanya dengan source(<file with code>,echo=TRUE).


sumber
(+1) juga direkomendasikan untuk menulis file sumber sebagai fungsi dan kemudian debug() browser()sangat membantu :)
Dmitrij Celov
1
juga vanilla, menunjukkan bagaimana perintah mengeksekusi baris per baris R-2.12 --vanilla <yourfile.R
user4581
1
metode apa pun untuk lulus juga parameter?
gc5
Tampaknya angka-angka diimbangi oleh 1 karena definisi fungsi. Apakah ada jalan pintas untuk itu?
irritable_phd_syndrom
10

Buka file skrip di dalam RGui Anda dan tekan Ctrl + R untuk menjalankan baris demi baris (Anda perlu menekan berkali-kali;)). Namun saya akan merekomendasikan untuk menggunakan RStudio untuk pekerjaan yang mudah dengan R. Dalam hal ini Anda menjalankan baris dengan Ctrl + Enter . Atau Anda dapat memodifikasi skrip untuk print()(atau cat()) objek.

Dmitrij Celov
sumber