我在用盒装Package.在我的项目中,我有一个Functions文件夹,其中保存了两个函数:hello.r和good bye.r

我可以使用box包加载它们,方法是:

box::use(functions/hello)
box::use(functions/goodbye)

问题是我可能在Functions文件夹中有几十个.R文件(每个函数一个.R文件).

有没有一种方法可以一次加载所有的.R文件(同时仍然使用box包),而不必多次重复box::use函数?

推荐答案

由于box::use使用非标准求值(NSE),因此必须将字符串转换为未求值的语言对象:

rm(list = ls())
ls()
# character(0)

rex <- "\\.[rR]$"
fld <- "functions"

fs::dir_tree(fld)
# functions
# ├── goodbye.R
# └── hello.R

fns <- list.files(fld, rex) |>     ## read all files in the folder
  gsub(rex, "", x = _) |>          ## drop extension
  paste(fld, . = _, sep = "/") |>  ## pre-pend folder
  lapply(str2lang)                 ## transform string into language object

## call box::use with the the newly creataed list
do.call(box::use, fns)
ls()
# [1] "fld"     "fns"     "goodbye" "hello"   "rex" 

Update based on Friede's tip to use 100

R相关问答推荐

获取列中值更改的行号

R for循环返回到先前值

迭代通过1个长度的字符串长字符R

使用列/行匹配将两个不同维度的矩阵相加

为了网络分析目的,将数据框转换为长格式列联表

在不丢失空值的情况下取消列出嵌套列表

Data.table';S GForce-将多个函数应用于多列(带可选参数)

如何根据数据帧中的值从该数据帧中提取值?

您是否可以将组添加到堆叠的柱状图

R -在先前group_by级别汇总时获取最大大小子组的计数

列名具有特殊字符时的循环回归

从多个可选列中选取一个值到一个新列中

随机森林的带Shap值的蜂群图

正则表达式在第二个管道和第二个T之后拆分R中的列

R如何将列名转换为更好的年和月格式

在R中使用列表(作为tibble列)进行向量化?

如何根据其他列中的两个条件来计算数据帧中的行之间的差异?

在GT()中的列之间添加空格

R:改进实现简单模型

删除r中每个因素级别的最后2行