【问题标题】:Rename a data frame without copying then removing original?重命名数据框而不复制然后删除原始数据?
【发布时间】:2016-06-24 02:35:46
【问题描述】:

在 R 中有没有一种方法可以简单地重命名数据框,而无需先复制现有数据框,给它一个新名称,然后删除原始数据框?

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

例如:

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

我知道我总能做到这一点

df2 <- df

# Or this
assign('df2', df)

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

df3 <- rename(df2) 

【问题讨论】:

标签: r dplyr


【解决方案1】:

您是否担心创建新对象和存储问题?因为根据@Hadley 在此线程http://r.789695.n4.nabble.com/renaming-objects-td851715.html 中的帖子,如果您只是为两个对象分配相同的值,R 实际上并不会创建一个新对象。按照 Hadley 的示例,您可以看到“R 只会在 a 或 b 被修改时创建副本”:

   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.

【讨论】:

  • 查看我对@zx8754 的评论,了解我的目标。不过,您的回答真的很有帮助!
猜你喜欢
  • 2018-04-29
  • 1970-01-01
  • 2020-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-14
相关资源
最近更新 更多