楼主: playmore
3792 4

[问答] 请问如何把rm函数封装到另一个函数里 [推广有奖]

已卖:1645份资源

学科带头人

2%

还不是VIP/贵宾

-

TA的文库  其他...

R相关

经济学相关

金融工程

威望
1
论坛币
16356 个
通用积分
8.6697
学术水平
372 点
热心指数
394 点
信用等级
341 点
经验
15297 点
帖子
1194
精华
1
在线时间
1332 小时
注册时间
2007-1-11
最后登录
2025-12-1

初级学术勋章 初级热心勋章 中级热心勋章

楼主
playmore 发表于 2013-9-16 15:59:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
就是清除全部变量的函数
rm(list=ls(all=TRUE))

我觉得太长太难记,想把它放到另一个函数里来调用
ClearAll <- function(){
  rm(list=ls(all=TRUE))
}

但是上述的办法没有用,应该是函数作用域的问题,在ClearAll函数里调用的rm只能清楚函数内部的变量

有什么办法可以达到清除所有变量,且引用方便的目的呢?谢谢!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:list Lea IST ear Rue 如何

本帖被以下文库推荐

  • · R学习|主题: 262, 订阅: 161
  • · R相关|主题: 22, 订阅: 21
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

沙发
ntsean 发表于 2013-9-17 03:37:22
清楚所有变量不是很容易的吗? rm(list=ls())

如果你非要他work,那么你可以

ClearAll <- function(){
  eval(quote(rm(list=ls(all=TRUE))), envir=globalenv())
}

或者,你想保留你的clear 函数

ClearAll <- function(){
  eval(quote(rm(list=setdiff(ls(all=TRUE), "ClearAll"))), envir=globalenv())
}
已有 2 人评分经验 学术水平 热心指数 信用等级 收起 理由
playmore + 1 + 1 + 1 观点有启发
dxystata + 50 + 1 热心帮助其他会员

总评分: 经验 + 50  学术水平 + 2  热心指数 + 1  信用等级 + 1   查看全部评分

藤椅
dxystata 发表于 2013-9-17 04:02:34
ntsean 发表于 2013-9-17 03:37
如果你非要他work,那么你可以

ClearAll <- function(){
  eval(quote(rm(list=ls(all=TRUE))), envir=globalenv())
}

或者,你想保留你的clear 函数

ClearAll <- function(){
  eval(quote(rm(list=setdiff(ls(all=TRUE), "ClearAll"))), envir=globalenv())
}
保留clear 函数,什么原理呢?

板凳
ntsean 发表于 2013-9-17 04:39:28
dxystata 发表于 2013-9-17 04:02
保留clear 函数,什么原理呢?
就是ClearAll 函数还是在global enviroment里面,否则也会被remove掉,如果在global enviroment里面的画

报纸
playmore 发表于 2013-9-17 08:13:07
ntsean 发表于 2013-9-17 03:37
清楚所有变量不是很容易的吗? rm(list=ls())

如果你非要他work,那么你可以
多谢指点!

另外,我在rm和ls的帮助里查到的设定全局环境的语句是envir=.GlobalEnv
不知道和你这里的envir=globalenv()有什么区别?
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-6 06:50