R “清理工作区”;“隐藏”;物体

R “清理工作区”;“隐藏”;物体,r,R,现在我有大约100个个人函数,可以用于逐行数据分析。我通常使用f.命名法来表示我的函数,但我发现它们开始妨碍我的工作。有没有办法在工作区中隐藏它们?这样,ls()就不会显示它们,但我仍然可以使用它们?试试这个,省去“f点”: FLess 如果你有很多重复使用的函数,请考虑把它们放入一个包中。然后,它们可以生活在自己的名称空间中,这样可以消除ls()混乱,还允许您删除f.前缀。您还可以将函数定义放在单独的环境中,然后附加()该环境。(这与Hong Ooi的建议类似,没有将其添加到可加载包中的附加

现在我有大约100个个人函数,可以用于逐行数据分析。我通常使用
f.
命名法来表示我的函数,但我发现它们开始妨碍我的工作。有没有办法在工作区中隐藏它们?这样,
ls()
就不会显示它们,但我仍然可以使用它们?

试试这个,省去“f点”:


<代码> FLess

如果你有很多重复使用的函数,请考虑把它们放入一个包中。然后,它们可以生活在自己的名称空间中,这样可以消除ls()混乱,还允许您删除

f.
前缀。

您还可以将函数定义放在单独的环境中,然后
附加()
该环境。(这与Hong Ooi的建议类似,没有将其添加到可加载包中的附加步骤。)我在
.Rprofile
文件中有此代码,用于设置一些常用的实用程序函数:

local(env = my.fns, { # create a new env. all variables created below go into this env.
  foo <- function (bar) {
    # whatever foo does
  }

  # put as many function definitions here as you want

})

attach(my.fns)
local(env=my.fns,{#创建一个新的env。下面创建的所有变量都进入这个env。

foo以下是一些尚未提及的选项

  • 名称以
    开头的对象不会显示在
    ls()
    中(默认情况下,您可以在
    ls()
    调用中使用参数
    all.names=TRUE
    启用此选项),因此您可以在源文件中将所有内容重命名为
    .f.
  • 与@Aaron的答案类似,但使用
    sys.source()
    直接将源代码发送到环境中
使用
sys.source()
的示例如下所示:

env <- attach(NULL, name = "myenv")
sys.source(fnames, env)

env我喜欢它,我只是希望我能理解你在这里做了什么。好极了,谢谢你的澄清!还有一个问题。这是否也能起作用,只需对其他非函数对象进行最小的更改就可以隐藏?比如我必须经常在exmaple中使用的向量?这完全不取决于对象的类型或模式。它只使用模式matc对象名称上的h。+1表示一个包。如果你有这么多的函数在反复使用,它们应该有一个主页。滚动一个包是正确的“R方式”提供这样一个家。哟,packagorama-这太容易不做了,而不是像+1这样的乱七八糟的东西。我同意你的看法,但包装是有成本的……也就是说,它需要花费的时间。它在我的R“需要解决的事情列表”中.1用于package initiative。这样,你就有更好的机会记录你的函数,你以后会喜欢这些函数。@Brandon read
?package.skeleton
。你可以给它一个函数列表(它们的名称,所以把@DWin的答案颠倒过来,只列出它们)或者提供一个包中所需函数的文件路径列表。这将为您完成艰巨的工作。然后您需要编写文档或至少编辑Rd文件
package.skeleton()
creates。如果需要,您可以为每个函数创建一个带有
\alias
的Rd文件,并删除创建的Rd文件
package.skeleton()
,以便可以安装该包。然后在进行/获得时间时为函数添加Rd文件。打包比您想象的要简单。谢谢Aaron,附加(),我已经读过,它几乎和它的用处一样危险。你经常使用它吗?@Brandon,
attach()
数据框一起使用时肯定是危险的。在这种情况下,它会导致不一致的结果,在与其他人共享代码时会出现“惊喜”,等等(如果它放在
.Rprofile
,因此执行一致)我发现它不太可能导致问题。当然,使用我的自定义函数的代码无法与其他人轻松共享,但这更多是自定义函数的性质问题,而不是
attach()的使用问题
在这种情况下。我不会在任何其他情况下使用
attach()。
local(env = my.fns, { # create a new env. all variables created below go into this env.
  foo <- function (bar) {
    # whatever foo does
  }

  # put as many function definitions here as you want

})

attach(my.fns)
env <- attach(NULL, name = "myenv")
sys.source(fnames, env)