列出我的数据的简单方法,而不是我在R中的功能? (隐藏ls()中的函数?)

时间:2013-03-29 16:04:47

标签: r

在一个使用R的长期项目中,我有一组约50个我定义的函数,我一直使用它,另外10个或15个我偶尔使用过的函数。其中大部分都不是我直接使用的功能;它们是我用来定义直接使用的辅助函数。当我从R数据文件加载数据对象时,我并不总是记得我命名对象的内容,所以我执行ls()来查看我加载的内容。但是,如果我已经加载了我的源doe文件,我必须在视觉上筛选输出以精确数据对象,这显然很不方便。

所以我将函数包装到R包中。如果我只是加载包,那么一切都很好。我可以使用这些函数,但ls()只显示数据对象。

但是,我不断添加新功能。而且我发现重新制作包并不是完全无足轻重的,所以我最终总是从源文件中加载我的函数 - 直到我开始重新编译包。

我当然可以比我更多地自动化包构建过程,或者将我的新功能拆分到单独的源文件中。我也可以将功能分成不同的包 - 也许这会有所帮助。我想我可以通过我直接调用的闭包来使辅助函数可用 - 我没有尝试过 - 但是如果我想这样做,我就不能直接使用助手,而且看起来像如果有一种更简单的方法,那就太过分了。这就是我想知道的:是否有一个我错过的简单技巧 - 一种使功能可供使用的方法,但是让我很容易向我展示我所拥有的数据对象而不列出这些功能。如果没有,好的,但我认为值得问。感谢。

这些问题: hiding personal functions in rremove all variables except functions 提供非常有用的答案。完成上述内容的最简单方法是什么?

2 个答案:

答案 0 :(得分:8)

lsf.str返回命名空间中函数的向量,因此您可以使用此函数从ls的输出中删除这些名称。

setdiff(ls(), lsf.str())

答案 1 :(得分:3)

将函数放在包结构文件夹中(即在名为R的子文件夹中)并使用package:devtools。编辑R代码时,唯一需要做的就是load_all("myfuncs")。所有内容都重新加载到R中,不会弄乱您的ls()列表,如果您需要进一步处理,则很容易打包和记录。但它不是强制性的。编辑后只需load_all