前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >52-R茶话会-十二:为什么我不建议你使用 rm(list=ls())

52-R茶话会-十二:为什么我不建议你使用 rm(list=ls())

作者头像
北野茶缸子
发布2021-12-17 11:00:33
1.7K0
发布2021-12-17 11:00:33
举报
文章被收录于专栏:北野茶缸子的专栏
  • Ref Links : Chapter 1 Saving source and blank slates | What They Forgot to Teach You About R (rstats.wtf)

这个内容来自一本很有意思的书——《What They Forgot to Teach You About R》。

为什么我不建议你使用 rm(list=ls())

你可能会经常在脚本中遇到rm(list=ls()),尤其是某些workflow 的内容。

它们的本意确实是好的:希望开启一个新的R。

但我们需要注意的是,rm(list=ls()) 并不等于R 的重启。这也是不建议如此操作的原因。

存在以下问题:

  • 略显鸡肋,既然是为了开启一个新的R,那何不直接重启R 呢;
  • 对于脚本的开发者来说:
    • 如果在脚本开发过程中加载了新的包,而没有将其写在library 中,其他使用者会报错;
    • 如果在脚本开发过程中进行了其他配置,如stringsAsFactors = FALSE,而未在脚本中声明,则其他使用者也会报错;
  • 可能外部读取使用了相对路径,而在命令行中直接修改了路径setwd(),而此时又未在脚本中声明新的路径,导致重启R 后发生报错。(这也是不建议使用setwd 的原因)

一些改善的策略:

  • 用R studio 等可以通过project 为单位管理脚本的开发工具,可以很方便的每次在Rproj 文件所在的位置即设定为工作目录,而且可以非常方便的切换到其他的项目;
  • 避免在脚本中使用rm(list=ls())setwd(),可以使用rs.restartR() 替代rm(list=ls())
  • 将重要的对象导出到output 文件夹内,保存为.Rdata,其他脚本中如果需要使用可以直接读取;
  • 所有的文件输出读取都使用相对路径;
  • 如果是使用R studio 的话,关闭默认保存环境中变量到.Rdata 文件;
    • FYI: prints a reminder about how to do this.usethis::use_blank_slate()
    • If you run R from the shell, launch with . You might want to define an alias in your : . Learn more by executing in a shell.R --no-save --no-restore-data``.bash_profile``alias R='R --no-save --no-restore-data'``R --help

    命令行可以按照如下操作:

重启R的方法

R studio 重启有以下方法:

  • rs.restartR();
  • use the menu item _Session > Restart R;
  • Command+Shift+F10 (Mac OS)

总结一下

  • 如果是代码开头习惯写rm(list=ls()) ,换成重启R ;
  • 使用R studio 这种以project 为单位的项目控制软件。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 北野茶缸子 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么我不建议你使用 rm(list=ls())
  • 重启R的方法
  • 总结一下
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档