代码之家  ›  专栏  ›  技术社区  ›  Renato Fernandes

将自定义包的所有函数导出到文件

  •  0
  • Renato Fernandes  · 技术社区  · 3 年前

    我的情况如下: 我制作了一个包(名为MyCDM),其中包含我在应用程序中经常使用的几个功能。当我在电脑上运行脚本时(我使用Rstudio),我会包含以下命令 library(MyCDM) 一切都很好。

    问题是,我想将脚本的执行迁移到我所在大学的云服务,在那里我没有包含新包的特权。

    我想将MyCDM包的所有功能导出到一个R文件中,这样我就可以将这个文件复制到University服务器中,并在我的脚本中获取它。

    我知道我可以复制我的包的“R”文件夹并将其粘贴到目标文件夹上。但大学网站指导我们避免对大量小文件进行复制/读取/写入操作,因为这会影响服务器的性能。

    我能够将所有函数导入到我的全局环境中,但我不知道如何将函数体写入文件中。

    有一种简单的方法吗?

    (附言:英语不是我的第一语言。很抱歉出现任何语言错误。如果我没有说清楚,请在评论中要求澄清)

    2 回复  |  直到 3 年前
        1
  •  2
  •   nrennie    3 年前

    一种解决方案是只使用R将R目录中每个文件的内容复制并粘贴到一个新文件中:

    purrr::walk(
      .x = list.files(path = "R/"),
      .f = ~write(
        readLines(file.path("R", .x)),
        file = "functions_script.R",
        append = TRUE)
    )
    

    这将获得R目录中所有文件的列表(假设您的工作目录当前是包的根目录,尽管您可以很容易地更改它) list.files 。然后将每个文件的内容复制并写入新文件 functions_script.R ,(并附加每个附加文件)。

        2
  •  1
  •   Ricardo Semião    3 年前

    您可以使用访问“MyCDM”中所有功能的列表 lsf.str("package:MyCDM") 。然后,您可以将其传递给 dump() 要将其全部保存在R文件中:

    dump(lsf.str("package:MyCDM"), file="MyCDM functions.R")
    

    稍后,你只需要做

    source("MyCDM functions.R")
    

    你的所有功能都将加载到你的全球环境中。