Editor RStudio menghancurkan file

Oct 27 2020

Saya mengalami masalah dimana jika saya mencoba mengedit file melalui RStudio, file tersebut diganti dengan file yang berisi teks "NULL". Saya pertama kali memperhatikan bahwa ini terjadi ketika saya menggunakan fix()dan membuat kesalahan sintaks, tetapi beberapa eksperimen telah mengarahkan saya ke ini menjadi alasannya.

Sebagai ilustrasi, pertama-tama di sini adalah sesi bukan di RStudio, melainkan Rguiaplikasi yang disertakan dengan R:

> edit(file = "temp.R")
[1] "There is stuff in this file" "extending over two lines."
>
> scan(file = "temp.R", what = "", sep = "\n")
Read 2 items
[1] "c(\"There is stuff in this file\"," "  \"extending over two lines.\")"

Sekarang saya akan melihat file ini di RStudio.

> scan(file = "temp.R", what = "", sep = "\n")
Read 2 items
[1] "c(\"There is stuff in this file\"," "  \"extending over two lines.\")"  
> 
> edit(file = "temp.R")

Inilah yang saya lihat:

[Pada tahap ini saya mengklik tombol "Batal"]

Kemudian saya membaca file itu lagi:

> scan(file = "temp.R", what = "", sep = "\n")
Read 1 item
[1] "NULL"

Jadi ... Tidak hanya tidak mengambil konten file, itu juga mengabaikan fakta bahwa saya membatalkan pengeditan. Jadi file saya hancur dan tidak ada cara untuk mendapatkannya kembali. Ini benar-benar tidak bagus. Adakah yang bisa memberi tahu apa yang telah terjadi? Saya menggunakan RStudio Versi 1.3.1093 (versi terbaru) di bawah Windows.

Saya menjalankan R terinstal yang sama, versi 4.0.3 (versi terbaru) di kedua antarmuka. Berikut adalah informasi sesi untuk Rgui:

> sessionInfo()
R version 4.0.3 (2020-10-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] compiler_4.0.3 parallel_4.0.3

dan berikut adalah informasi sesi untuk RStudio:

> sessionInfo()
R version 4.0.3 (2020-10-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] compiler_4.0.3  htmltools_0.4.0 tools_4.0.3     parallel_4.0.3  yaml_2.2.1     
 [6] Rcpp_1.0.4.6    rmarkdown_2.2   knitr_1.28      xfun_0.14       digest_0.6.25  
[11] rlang_0.4.6     evaluate_0.14 

Jawaban

1 RussLenth Oct 29 2020 at 18:42

Saya melaporkan bug ini ke RStudio, dan orang-orang itu sangat responsif. Ternyata, masalah terjadi di Windows tetapi tidak di MacOSX. Tidak yakin tentang Linux dan lainnya.

Solusi untuk saat ini adalah mengatur

options(editor = "internal")

Hal ini memungkinkan editor yang agak berbeda (tidak perlu repot, tetapi memerlukan "Simpan" dan "Tutup" untuk keluar).

Membuat ini terjadi secara otomatis saat Anda memulai RStudio agak rumit. Anda tidak bisa begitu saja mengatur opsi ini di .Rprofilefile Anda , karena RStudio memulai R dan kemudian menimpa opsi itu dengan yang menyebabkan bug ini. Sebagai gantinya, tambahkan ini ke .Rprofilefile Anda :

setHook("rstudio.sessionInit", function(newSession) {
    if (newSession) {
      options(editor = "internal")
      message("NOTE: `internal` editor has been set")
    } 
  }, action = "append"
)

(Biasanya, .Rprofileada di direktori home Anda - di Windows, yaitu Documents) Beberapa editor tidak menyukai nama file yang dimulai dengan ., jadi Anda mungkin perlu menyimpannya dengan nama yang berbeda dan kemudian mengganti namanya.