我已经在R控制台中加载了不同类型的对象。 我可以用删除除函数外的所有变量
rm(list=ls())
将它们全部删除或者(但不是变量)使用
rm(list=lsf.str())
我的问题是只删除功能: 是有没有办法删除除功能
所有变量我已经在R控制台中加载了不同类型的对象。 我可以用删除除函数外的所有变量
rm(list=ls())
将它们全部删除或者(但不是变量)使用
rm(list=lsf.str())
我的问题是只删除功能: 是有没有办法删除除功能
所有变量这是一个单线程删除所有对象除了功能:
rm(list = setdiff(ls(), lsf.str()))
它使用setdiff
找到全球环境的对象不具有模式function
(由lsf.str()
返回)
张贴的setdiff
答案是很好的子集(由ls()
返回)。我只是想我会发布这个我写回来的相关函数。它的用处取决于读者:-)。
lstype<-function(type='closure'){
inlist<-ls(.GlobalEnv)
if (type=='function') type <-'closure'
typelist<-sapply(sapply(inlist,get),typeof)
return(names(typelist[typelist==type]))
}
感谢您发布该信息。它与'ls.str()'的代码做了一个有趣的比较,然而它测试的是'mode'而不是'typeof'对象。 (在附注中,如果我能从他们的文档中找出这两者之间的差异,我会感到厌烦)。 –
@MatthewLundberg,我总是用class而不是typeof – RockScience
这里是一个非常方便的功能,我拿起地方,并调整了一点。可能很高兴留在目录中。
list.objects <- function(env = .GlobalEnv)
{
if(!is.environment(env)){
env <- deparse(substitute(env))
stop(sprintf('"%s" must be an environment', env))
}
obj.type <- function(x) class(get(x, envir = env))
foo <- sapply(ls(envir = env), obj.type)
object.name <- names(foo)
names(foo) <- seq(length(foo))
dd <- data.frame(CLASS = foo, OBJECT = object.name,
stringsAsFactors = FALSE)
dd[order(dd$CLASS),]
}
> x <- 1:5
> d <- data.frame(x)
> list.objects()
# CLASS OBJECT
# 1 data.frame d
# 2 function list.objects
# 3 integer x
> list.objects(env = x)
# Error in list.objects(env = x) : "x" must be an environment
,好主意。我更新了。 –
您可以使用以下命令清除所有变量。要小心,因为它不能让你的变量回来。
rm(list=ls(all=TRUE))
很高兴知道,但这不是问题 – RockScience
我想我应该把它作为评论,因为它更多的是一个供参考。抱歉。 – lwileczek
如果您还想要删除的对象,其名称开头一段,用这个来代替: 'RM(名单= setdiff(LS(all.names = TRUE),lsf.str(all.names = TRUE)))' –
非常感谢这个答案。我可以知道什么是一个时期? – RockScience
当然。一段时间(美式英语)是点的另一个名称,如下所示:'.'要查看我在说什么,请尝试'.j < - 5; LS(); ls(all.names = TRUE)' –