【问题标题】:I want to have a list of all the functions in my R workspace that works like the objects() command我想列出我的 R 工作区中所有功能的列表,这些功能类似于 objects() 命令
【发布时间】:2013-11-17 10:10:15
【问题描述】:

我喜欢使用 R 函数,所以我的工作区积累了很多函数。

但是,“objects()”命令似乎返回了命名我的对象而不是对象本身的字符串。因此,当我有一个名为“barchart00”的函数时,它会显示在 objects() 命令中,如果我测试它的类型,它可以作为函数检测到,如下面的代码所示:

is.function(barchart00) [1] 是的

> objects()
[1] "barchart00"  

> OL<-objects()
> OL
[1] "barchart00"  

> is.function(OL[1])
[1] FALSE

如果我只有一两个或三个函数,这不会是一个问题。但实际上我有几十个函数,还有几十个不是函数的对象,我想得到一个函数列表,它与 objects() 返回的对象列表一样方便。

我的第一个想法是,如果 objects() 返回一个实际对象的列表,我可以通过该列表并测试函数状态。但实际上,objects() 似乎返回的是我的对象名称的字符串列表,而不是对象本身。

任何建设性的建议将不胜感激。谢谢。

...Hong Ooi 回答了这个问题,但我无法再将其标记为已回答 8 小时。

lsf.str() 是我正在寻找的语法。

所有功劳都应归功于 Hong Ooi。

https://stackoverflow.com/users/474349/hong-ooi

谢谢,Hong Ooi。

【问题讨论】:

  • lsf.str() 带括号似乎完全符合我的要求,谢谢。 () 中带有包名的类似语法似乎将范围限制为指定的包。非常感谢!

标签: r function object types


【解决方案1】:

lsf.str 看起来是个不错的答案。如果您想要一个更通用的工具,这是我的(这里是喇叭)cgwtools 包中的一个。您可以获得环境中任何特定类型对象的列表(不仅仅是闭包)。

lstype <-  function(type='closure'){
#simple command to get only one type of object in current environment
# Note: if you foolishly create variables named 'c' ,'q' ,'t' or the like,
# this will fail because typeof finds the builtin function first
        inlist<-ls(.GlobalEnv)
        if (type=='function') type <-'closure'
        typelist<-sapply(sapply(inlist,get),typeof)
        return(names(typelist[typelist==type]))
}

【讨论】:

  • 谢谢。我在几台机器上安装了几个版本的 R。你的 cgwtools 包可能适合我的 Linux Mint 机器。我会试一试的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-12
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多