求在Rmarkdown文档中使用klmr::box引入库与本地函数的示例
在RMarkdown中使用klmr::box包的示例
klmr::box在RMarkdown里的用法很直接,不需要在YAML元数据里声明模块或库——所有导入逻辑都放在R代码块里就行,和普通R脚本写法一致。下面是具体示例:
1. 先确保安装了box包
如果还没安装,运行这段代码:
install.packages("klmr/box", repos = "https://klmr.r-universe.dev")
2. 导入CRAN包(按需加载指定函数)
在RMarkdown的代码块里,用box::use()导入需要的包或特定函数,比如只加载dplyr的filter和mutate:
# 导入指定函数,避免加载整个包 box::use(dplyr[filter, mutate]) # 演示用法 mtcars %>% mutate(gear_cat = ifelse(gear == 3, "3档", "其他")) %>% filter(mpg > 20)
3. 导入本地自定义模块
假设你在RMarkdown文件的同目录下,有一个名为utils.R的本地模块文件,内容如下:
# utils.R 模块内容 #' 加法函数 add_numbers <- function(a, b) { return(a + b) } #' 计算平方 square <- function(x) { return(x^2) }
然后在RMarkdown里导入这个模块的指定函数:
# 导入本地模块的指定函数,路径相对于当前RMarkdown文件 box::use(./utils[add_numbers, square]) # 调用本地函数 add_numbers(2, 3) # 输出5 square(4) # 输出16
注意事项
- 本地模块路径:用
./开头表示当前RMarkdown所在目录,也可以用绝对路径,比如/Users/xxx/project/utils - 和Rhino的区别:Rhino框架有约定的模块目录结构(比如
modules/文件夹),但RMarkdown里没有强制要求,只要路径正确就能导入 - 模块重载:如果修改了本地模块内容,可以用
box::reload(./utils)重新加载
内容的提问来源于stack exchange,提问作者Captain Tyler
相关产品推荐
相关产品推荐

