使用 R studio 時,嘗試使用 for 回圈時出錯
for(i in 1:4){print(i)} Error in check_reserved(for_var_name) : could not find function "check_reserved"
任何人都知道如何解決這個問題?我已經更新了 R、RStudio 并重新啟動了會話
會話資訊:
R version 4.1.1 (2021-08-10) Platform: x86_64-apple-darwin17.0
(64-bit) Running under: macOS Big Sur 10.16
Matrix products: default
LAPACK:
/Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib
attached base packages: [1] stats graphics grDevices utils datasets
methods base
loaded via a namespace (and not attached): [1] compiler_4.1.1
tools_4.1.1
謝謝!
uj5u.com熱心網友回復:
錯誤是因為之前的使用magic::magic_for以某種方式被帶回環境中。該函式的明顯意圖(自 2016 年以來沒有變化)是允許for回圈存盤修改后的函式的結果,例如:
library(magicfor) # Load library
magic_for(print) # Call magic_for()
for (i in 1:3) {
squared <- i ^ 2
print(squared)
}
#> The loop is magicalized with print().
#> [1] 1
#> [1] 4
#> [1] 9
magic_result_as_vector() # Get the result
#> [1] 1 4 9
似乎print保留了該函式的“魔法化” (可能在 中.Rdata),但是在會話重新啟動時,該magicfor包不可用(或只是未加載)。我認為,如果作業流確實需要該magicfor包,那么 (1) 確保它已加載,并且 (2) 向作者提交一個錯誤,以便它更好地適應這種情況。
缺乏這一點,我現在的建議是:
- 不加載
.Rdata檔案(“保存的會話”或類似的);許多人認為擁有可重復的作業流程并重新生成您需要加載它們的中間/最終結構要好得多;這個建議的例外是長時間運行的行程,但即便如此,我認為更好的情況是明確保存/快取這些值,而不是整個會話; - 同樣,檢查
.Rprofile和其他 R 啟動檔案以洗掉任何提及magicfor; - 也許是核,但社區執行緒提到卸載
magicfor軟體包;目前尚不清楚這是否是決議的一部分,盡管根本原因似乎不太可能是.Rdata檔案中的陳舊參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/335725.html
