Rワークスペースをロードしようとすると、次のエラーが表示されました。
Error: bad restore file magic number (file may be corrupted) -- no data loaded
In addition: Warning message:
file ‘WORKSPACE_Wedding_Weekend_September’ has magic number '#gets'
Use of save versions prior to 2 is deprecated
私は技術的な詳細に特に興味はありませんが、主にそれをどのように引き起こし、将来どのように防ぐことができるかに興味があります。状況に関するいくつかの注意事項は次のとおりです。
load()
またはsource()
の代わりに誤ってreadRDS()
を使用すると、このエラーが発生しました。
ファイルの名前が「myfile.ext」であると仮定します
ロードしようとしているファイルがRスクリプトではない場合は、使用します
source("myfile.ext")
readRDS
functionを試して、変数名に割り当てることができます。
my.data <- readRDS("myfile.ext")
マジックナンバーは、ファイルの最初の数バイトがファイルタイプを示すマーカーを保持しているUNIXタイプのシステムから取得されます。
このエラーは、無効なファイルタイプをRにロードしようとしていることを示します。何らかの理由で、RはこのファイルをRワークスペースファイルとして認識しなくなりました。
また、v3.5.0以降のRのバージョンの変更点をまとめたRコアチームのドキュメントから、次の点に注目する価値があります( here ):
Rには、ALTREPフレームワークオブジェクトのカスタムシリアル化をサポートする新しいシリアル化フォーマット(バージョン3)があります...フォーマット3のシリアル化されたデータは、Rバージョン3.5.0。
V3.6.0でワークスペースを保存し、v3.4.2を使用している同僚とファイルを共有すると、この問題が発生しました。保存機能に「バージョン= 2」を追加することで問題を解決できました。
readr
パッケージをインストールしてから、library(readr)
を使用します。
また、使用する代わりにload()
rdsオブジェクトを試みるときにも発生します
object <- readRDS("object.rds")
Rパッケージのビルド時にエラーが発生しました(roxygen2を使用)
私の場合の原因は、saveRDS()
ではなくsave()
でdata/mydata.RData
を保存したことです。例えば。 save(iris, file="data/iris.RData")
これで問題が解決しました。この情報を見つけました こちら
また、save()
/load()
を使用すると、オブジェクトは最初に保存したときと同じ名前でロードされます(つまり、最初に保存したときの名前でR環境にロードされるまで名前を変更することはできません)。
古いバージョンのRでRdataファイルを保存してから新しいバージョンで開こうとしたときに、この問題が発生しました。 Rバージョンを最新に更新することで解決しました。
devtools
を使用している場合は、次を使用してファイルを保存してください。
devtools::use_data(x, internal = TRUE)
次に、以前に保存したすべてのファイルを削除します。
ドキュメントから:
内部FALSEの場合、各オブジェクトをデータディレクトリの個々の.rdaファイルに保存します。これらはパッケージがロードされるたびに使用可能です。TRUEの場合、すべてのオブジェクトを単一のR/sysdata.rdaファイルに保存します。パッケージ内で利用可能。