gpt4 book ai didi

使用 R 删除名称以模式开头的工作区对象

转载 作者:行者123 更新时间:2023-12-04 13:31:37 25 4
gpt4 key购买 nike

我经常创建名称以“tp_”开头的临时对象并使用用户定义的函数。为了保持干净的工作区,我想创建一个删除临时文件的函数,同时保留用户定义的函数。

到目前为止,我的代码是:

rm(list = setdiff(ls(), lsf.str())) # Removes all objects except functions
rm(list = ls(, pattern = "tp_")) # Removes all objects whose name contain 'tp_'

我想要:
  • 改进第二个函数,以便删除名称为 的对象。开始 通过 'tp_'(到目前为止,它删除了名称 包含 'tp_' 的对象)。我试过 substr(ls(), 1, 3)但不知何故无法将其集成到我的功能中。
  • 将这两个功能合二为一。

  • 一些 R 对象:
    tp_A = 1
    myfun = function(x){sum(x)}
    atp_b = 3

    该函数应该只删除 tp_A从工作区。

    最佳答案

    模式参数使用正则表达式。您可以使用插入符号 ^匹配字符串的开头:

    rm(list=ls(pattern="^tp_"))
    rm(list=setdiff(ls(pattern = "^tp_"), lsf.str()))

    但是,除了名称前缀之外,还有其他模式可用于管理临时项目/保持干净的工作区。

    考虑,例如,
    temp<-new.env()
    temp$x <- 1
    temp$y <- 2
    with(temp,x+y)
    #> 3
    rm(temp)

    另一种可能是 attach(NULL,name="temp")assign .

    关于使用 R 删除名称以模式开头的工作区对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32335536/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com