2017-04-08 41 views
0

我建立了自己的功能,每次需要运行这个功能时,我都需要这么做。有没有什么办法可以像任何R包一样自动加载?或者我可以建立一个仅供我使用的R包?如何自动加载我自己的函数作为R包?

+3

是的,你可以建立一个只供你使用的R包。如果您构建它并且不分发它,那么您将成为唯一的用户。如何建立一个软件包,可以在Hadley Wickham的伟大着作中找到,可以在线阅读:http://r-pkgs.had.co.nz/ –

+2

在旁注中,请记住这些非常类似广泛的问题超出了SO的范围。查看这些信息,试用一下,如果它没有按计划运行,请回来一个特定的问题,包括一个代码示例。现在回答你的问题,我们需要写一本书。 –

+0

谢谢你的帮助。我读了很多,并在谷歌搜索了三天。我发现的所有想法都是为了包装,然后我们需要按照我的理解进行分发。因此,从您的第一条评论中,我明白我可以构建我的包并且不需要分发它。再次感谢。 –

回答

0

会推荐Nate Days解决方案,但您也可以使用Rs save()load()函数来执行此操作。它适用于所有R对象,并将它们存储在binay .rda文件中。您也可以存储多个对象。

尝试:

add <- function(x, y){return(x+y)}

save(add, file = 'add_function.rda')

每当你需要你的函数,这样做:

load('add_function.rda')

而且add()将在父环境中可用。

-2

有一个上CRAN称为pkgmaker包,有一吨的工具和实用程序,为您打造您自己的包。作为备选方案,您可以考虑为您创建一个functions.R脚本,以存储您所有的个人创建和常用功能。您可以将source('functions.R', local=TRUE)行添加到您的程序,脚本或应用程序中,并且您的功能将可供您使用。这就是我如何处理这个问题。干杯

+0

'pkgmaker'是一个用于包开发的低级工具的工具集。软件包建设的主要工具是Windows上的Rtools(不是软件包),软件包'devtools',一些基本功能,比如'package.skeleton',因为'devtools','roxygen2'和其他软件很少被使用并入RStudio。 只有将函数放置到全局环境中才能覆盖该函数。所以这也不是一个解决方案。 –