从单个R函数生成PDF

oxcyiej7  于 2023-02-06  发布在  其他
关注(0)|答案(1)|浏览(149)

想象一下,你定义了一个R函数与一个朋友共享,只有一个函数。如果,你决定稍后将这个函数包含在一个包中,你使用Roxygen注解和标签(例如#' @name my_function)来记录它。是否可以从这个单一的R文件生成PDF?如果可以,如何?

5lhxktic

5lhxktic1#

**1)**我们将使用文件lc.R作为示例,它是我们首先从github下载的。首先使用kitten创建一个包的样板文件。将lc.R复制到它。然后从devtools运行document以将其rooxygenize化,最后使用Rd 2 pdf创建pdf,lc.pdf。

library(devtools)
library(pkgKitten)
library(roxygen2)

# set up lc in lc.R to use as a test example
u <- "https://raw.githubusercontent.com/mailund/lc/master/R/lc.R"
download.file(u, "./lc.R")

# create package containing lc.R - ignore any NAMESPACE warnings
kitten("lc")
file.copy("lc.R", "./lc/R")

# roxygenize it generating an Rd file
document("lc")
file.copy("lc/man/lc.Rd", ".")

# convert Rd file to pdf
cmd <- paste(R.home("bin/R.exe"), "CMD Rd2pdf lc.Rd")
system(cmd, wait = FALSE)

**2)**CRAN上曾经有一个名为document(或参见gitlab)的包,它可以一步完成同样的任务,但去年被删除了。注意,文档包依赖于fritools(或参见gitlab)包,后者也被删除了。这两个包的源代码都存档在CRAN和gitlab上,您可以自己构建它们。
**3)**此方法不创建PDF,但允许用户查看脚本的格式化帮助,该脚本将其从roxygen 2标记转换为HTML并在浏览器中显示。注意,不应附加Box包。例如,不要使用library(box)语句。假设lc.R位于当前目录中--请参见中的download.file语句下面的代码可能会生成警告或错误,但它仍然可以在lc.R中调出lc函数的帮助,并在默认浏览器中显示它。

box::use(./lc)
box::help(lc$lc)

相关问题