加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

隐藏ls()结果中的函数名称 – 更快地查找变量名称

发布时间:2020-12-14 01:35:14 所属栏目:Linux 来源:网络整理
导读:当我们定义了数十个函数 – 可能是为了开发一个新的包 – 很难通过ls()命令找出许多函数名中特定变量的名称. 在大多数情况下,我们不是在寻找函数名称 – 我们已经知道它们存在 – 但我们想要找到我们为变量赋予的名称. 任何解决它的想法都非常感谢. 解决方法
当我们定义了数十个函数 – 可能是为了开发一个新的包 – 很难通过ls()命令找出许多函数名中特定变量的名称.

在大多数情况下,我们不是在寻找函数名称 – 我们已经知道它们存在 – 但我们想要找到我们为变量赋予的名称.

任何解决它的想法都非常感谢.

解决方法

如果你想要一个函数来做这个,你需要在ls()查找的环境中玩一下.在正常使用中,下面的实现将通过在函数的父框架中列出对象来工作,这将是如果在顶层调用全局环境.

lsnofun <- function(name = parent.frame()) {
    obj <- ls(name = name)
    obj[!sapply(obj,function(x) is.function(get(x)))]
}

> ls()
[1] "bar"           "crossvalidate" "df"           
[4] "f1"            "f2"            "foo"          
[7] "lsnofun"       "prod"         
> lsnofun()
[1] "crossvalidate" "df"            "f1"           
[4] "f2"            "foo"           "prod"

我写了这个,所以你可以传入ls()的name参数,如果你需要在一系列嵌套函数调用中调用这种方式.

还要注意,当我们测试它们是否是函数时,我们需要得到()ls()命名的对象.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读