2016-06-22 3 views
2

既存のデータフレームを最初にコピーして新しい名前を付けて元のデータフレームを削除せずに、単にデータフレームの名前を変更する方法はありますか?コピーせずにデータフレームの名前を変更して元のファイルを削除しますか?

コピーしたデータフレームに追加のメモリが必要ではないことを理解します。私は単にRStudio環境のオブジェクトの数を制限して、混乱と下流の潜在的なエラーを減らそうとしています。例えば

df <- data_frame(a = c(1:5), 
      b = c(6:10)) 

私はいつも

df2 <- df 

# Or this 
assign('df2', df) 

しかし、私はまだdfを削除する必要があり、両方のケースでこれを行うことができます知っているので、私はむしろ、このような何かをするだろう。

df3 <- rename(df2) 
+0

[Rのコピーオンセマントセマンティクスとは正確に何で、正規のソースはどこですか?](http://stackoverflow.com/questions/15759117/what-exactly-is-copy-on-修正のセマンティクスは、rの - と - どこ - 標準 - ソース) – zx8754

+0

このようなものhttps://rhandbook.wordpress.com/tag/rename-data-frame/ – user5249203

+0

@ zx8754私の目的は主にオリジナルの名前を持つオブジェクトを明示的に削除せずに、自分の環境内のオブジェクトの数を制限してください。 – TClavelle

答えて

0

新しいオブジェクトの作成とストレージの問題が心配ですか?このスレッドの@ Hadleyの投稿によれば、http://r.789695.n4.nabble.com/renaming-objects-td851715.htmlという2つのオブジェクトを単純に割り当てると、同じ値のRは実際には新しいオブジェクトを作成しません。ただで同じオブジェクトへのポインタとして、これはabを考えるかもしれない概念化する

a <- data.frame(a = c(1:5),b = c(6:10)) 
gc() 
      used (Mb) gc trigger (Mb) max used (Mb) 
Ncells 1661290 88.8 2564037 137.0 2403845 128.4 
Vcells 2354971 18.0 7963162 60.8 63055235 481.1 

b <-a 
gc() 
      used (Mb) gc trigger (Mb) max used (Mb) 
Ncells 1661285 88.8 2564037 137.0 2403845 128.4 
Vcells 2354961 18.0 7963162 60.8 63055235 481.1 

一つの良い方法は:ハドレーの例に続きます「またはbが変更された場合、Rは専用コピーを作成する」ことがわかりますR.オブジェクトは1回だけ格納されますが、abの両方で参照できます。

+0

私の目的については、上記の@ zx8754のコメントを参照してください。あなたの答えは本当に知っていると便利です! – TClavelle

関連する問題