私は、RDATAファイル内のオブジェクトのリストを作成し、選択されたオブジェクトのみをロードすることに興味があります。 attach()
はうまく動作しないので、名前の競合があるときにこれを行う方法についてはっきりしていません。新しい環境に添付して.rdataファイルの内容を調べることは可能ですか?
1:それをロードせずにRのデータファイルの内容を調べる:この質問は同様の、しかし異なる、一つはその場合listing contents of an R data file without loading
に尋ね、提供される溶液であった:
attach(filename)
ls(pos = 2)
detach()
ファイル内のオブジェクトと地球環境のそれらの間で名前の競合をがある場合
、この警告が表示されます。 The following object(s) are masked _by_ '.GlobalEnv':
私は新しい環境を作成しようとしたが、Iそれに取り付けることはできないようです。例えば 、これは同じエラーを生成します。
lsfile <- function(filename){
tmpEnv <- new.env()
evalq(attach(filename), envir = tmpEnv)
tmpls <- ls(pos = 2)
detach()
return(tmpls)
}
lsfile(filename)
は、たぶん私はevalq
(またはeval
)で物事の混乱を作りました。名前の競合を避けるための他の方法がありますか?
2:オブジェクトにアクセスしたい場合は、名前の競合がない場合は、.rdatファイルのものと作業したり、新しいものにコピーしたりできます。競合がある場合、ファイルの名前空間内のオブジェクトにどのようにアクセスしますか?
たとえば、私のファイルが "sample.rdat"で、オブジェクトがsurveyDataで、surveyDataオブジェクトが既にグローバル環境に存在する場合、file:sample.rdat
名前空間から1つにアクセスするにはどうすればよいですか?
私は現在、すべてを一時的な環境にロードし、必要なものをコピーすることでこの問題を解決していますが、これは非効率的です。
r-develに要求があり、完全な.Rdtaファイルを読み込む代わりになるようです。 –