Saat Anda menyimpan variabel dalam file data R menggunakan save
, itu disimpan dengan nama apa pun yang dimilikinya di sesi yang menyimpannya. Ketika saya nanti akan memuatnya dari sesi lain, itu dimuat dengan nama yang sama, yang mungkin tidak diketahui oleh skrip pemuatan. Nama ini dapat menimpa variabel yang ada dengan nama yang sama di sesi pemuatan. Apakah ada cara untuk memuat objek dengan aman dari file data ke dalam nama variabel tertentu tanpa risiko mengganggu variabel yang ada?
Contoh:
Sesi penyimpanan:
x = 5
save(x, file="x.Rda")
Memuat sesi:
x = 7
load("x.Rda")
print(x) # This will print 5. Oops.
Bagaimana saya ingin bekerja:
x = 7
y = load_object_from_file("x.Rda")
print(x) # should print 7
print(y) # should print 5
r
variable-names
rdata
Ryan C. Thompson
sumber
sumber
saveRDS
danreadRDS
, terkait, menyimpan dan memulihkan semua atribut objek, termasuk yang dibuat oleh aplikasi (melaluiattr
)? Saya mencoba menggunakan pendekatan ini daripadasave
danload
, mencoba menemukan solusi untuk masalah saya. Namun, tampaknya tidak demikian, kecuali saya melakukan sesuatu yang salah: stackoverflow.com/questions/23701195/… .Saya menggunakan yang berikut ini:
sumber
Anda dapat membuat lingkungan baru, memuat file .rda ke lingkungan tersebut, dan mengambil objek dari sana. Namun, hal ini memberlakukan beberapa batasan: entah Anda tahu apa nama asli objek Anda, atau hanya ada satu objek yang disimpan di file.
Fungsi ini mengembalikan objek yang dimuat dari file .rda yang disediakan. Jika ada lebih dari satu objek dalam file, satu objek akan dikembalikan.
sumber
new.env
benar - benar perlu? Bukankah panggilan fungsi itu sendiri menyediakan lingkungan sementara?Anda juga bisa mencoba sesuatu seperti:
sumber
Jika ada yang ingin melakukan ini dengan file sumber biasa, daripada file Rdata / RDS / Rda yang disimpan, solusinya sangat mirip dengan yang disediakan oleh @Hong Ooi
Cetakan:
Dan dalam file sumber terpisah TestSourceFile.R
Sekali lagi, solusi ini hanya berfungsi jika hanya ada satu file, jika ada lebih banyak, maka itu hanya akan mengembalikan salah satunya (mungkin yang pertama, tetapi itu tidak dijamin).
sumber
Saya memperluas jawaban dari @ricardo untuk memungkinkan pemilihan variabel tertentu jika
.Rdata
file tersebut berisi banyak variabel (karena kredit saya rendah untuk mengedit jawaban). Ia menambahkan beberapa baris untuk membaca masukan pengguna setelah mencantumkan variabel yang terdapat dalam.Rdata
file.sumber
File rdata dengan satu objek
sumber