如何自定义R包中learnr教程的展示顺序而非按字母排序?
自定义learnr包中教程的展示顺序
目前learnr并没有提供类似swirl的MANIFEST文件这种直接配置教程顺序的官方方式,不过有两种可行的解决思路:
1. 自定义函数控制展示顺序
你可以在包内写一个自定义函数,替代原生的learnr::available_tutorials(),手动指定教程的排列顺序。比如:
my_pkg_tutorials <- function() { # 获取所有教程 all_tutorials <- learnr::available_tutorials("your_pkg_name")$tutorials # 自定义顺序,把"hello"放在最前面,剩下的按你需要的顺序列出来 desired_order <- c("hello", "basic_operations", "advanced_features") # 匹配并重新排序 all_tutorials[match(desired_order, all_tutorials$name), ] }
之后在包的文档里说明用户可以调用这个自定义函数查看教程,就能得到你想要的顺序。
2. 给教程文件加前缀(妥协方案)
如果不想额外写函数,最直接的办法就是给教程的Rmd文件名加数字或字母前缀,比如:
01-hello.Rmd02-basics.Rmd03-advanced.Rmd
这样learnr按字母排序时,就会自动按照前缀的顺序排列,轻松实现你要的展示效果。
需要注意的是,原生的learnr::available_tutorials()确实默认按教程名称的字母顺序返回结果,没有内置的配置项可以直接修改这个逻辑,所以上面两种是目前最实用的解决方式。
内容的提问来源于stack exchange,提问作者uke
相关产品推荐
相关产品推荐

