Der RStudio-Editor zerstört Dateien
Ich habe ein Problem, bei dem beim Versuch, eine Datei über RStudio zu bearbeiten, diese Datei durch eine Datei ersetzt wird, die den Text "NULL" enthält. Ich bemerkte zuerst, dass dies geschah, als ich fix()einen Syntaxfehler verwendete und machte, aber einige Experimente haben mich dazu geführt, dass dies der Grund war.
Zur Veranschaulichung ist hier zunächst eine Sitzung nicht in RStudio, sondern die Rguimit R gelieferte App:
> 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.\")"
Jetzt werde ich mir diese Datei in RStudio ansehen.
> 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")
Das sehe ich:
[An dieser Stelle klicke ich auf die Schaltfläche "Abbrechen"]
Dann habe ich die Datei noch einmal gelesen:
> scan(file = "temp.R", what = "", sep = "\n")
Read 1 item
[1] "NULL"
Also ... Es hat nicht nur den Inhalt der Datei nicht abgerufen, sondern auch die Tatsache ignoriert, dass ich die Bearbeitung abgebrochen habe. Meine Datei ist also zerstört und es gibt keine Möglichkeit, sie zurückzubekommen. Das ist wirklich nicht gut. Kann jemand raten, was passiert ist? Ich verwende RStudio Version 1.3.1093 (neueste Version) unter Windows.
Ich verwende das gleiche installierte R, Version 4.0.3 (neueste Version) in beiden Schnittstellen. Hier sind die Sitzungsinformationen für 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
und hier sind die Sitzungsinformationen für 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
Antworten
Ich habe RStudio diesen Fehler gemeldet, und diese Leute haben sehr schnell reagiert. Offensichtlich tritt das Problem unter Windows, aber nicht unter MacOSX auf. Ich bin mir nicht sicher über Linux und andere.
Eine Problemumgehung ist vorerst festzulegen
options(editor = "internal")
Dies ermöglicht einen etwas anderen Editor (weniger nackte Knochen, benötigt jedoch sowohl ein "Speichern" als auch ein "Schließen", um ihn zu beenden).
Dies automatisch zu starten, wenn Sie RStudio starten, ist etwas schwierig. Sie können diese Option nicht einfach in Ihrer .RprofileDatei festlegen , da RStudio R startet und diese Option dann mit der Option überschreibt, die diesen Fehler verursacht. Fügen Sie dies stattdessen Ihrer .RprofileDatei hinzu:
setHook("rstudio.sessionInit", function(newSession) {
if (newSession) {
options(editor = "internal")
message("NOTE: `internal` editor has been set")
}
}, action = "append"
)
(Befindet sich normalerweise .Rprofilein Ihrem Home-Verzeichnis - also in Windows Documents) Einige Editoren mögen keine Dateinamen, die mit beginnen. .Daher müssen Sie sie möglicherweise unter einem anderen Namen speichern und dann umbenennen.