重命名数据框而不复制然后删除原始数据?

时间:2016-06-22 21:00:40

标签: r dplyr

R中是否有办法简单地重命名数据框而不先复制现有数据框,给它一个新名称,然后删除原始数据?

据我所知,复制的数据帧不占用额外的内存。我只是想限制我的RStudio环境中的对象数量,以减少混乱和下游的潜在错误。

例如:

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

我知道我总能做到这一点

df2 <- df

# Or this
assign('df2', df)

但在这两种情况下我仍然需要删除df,所以我宁愿做这样的事情:

df3 <- rename(df2) 

1 个答案:

答案 0 :(得分:0)

您是否担心创建新对象和存储问题?因为根据@ Hadley在这个帖子http://r.789695.n4.nabble.com/renaming-objects-td851715.html中的帖子,如果你只是分配两个对象,那么R实际上并没有创建一个新对象。按照Hadley的例子,您可以看到&#34; R只会在a或b被修改时创建一个副本&#34;:

   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

概念化这一点的一个好方法可能是将ab视为指向R中相同对象的指针。因此,对象只存储一次,但可以由两者引用ab