在R for Windows和tidyverse中,如果我分别安装和加载dyplyr、magrittr和ggplot2等库,rlang.dll能做什么?如果没有它,我能做什么吗?
文件rlang.dll是一个二进制文件,其中包含已编译的C代码,rlang调用这些代码来完成部分工作。由于{dplyr}和{ggplot2}都从rlang导入函数,这使得rlang成为两个软件包的硬依赖项,这意味着如果没有它,这些软件包就无法运行。如果您特别尝试在没有硬依赖项的情况下安装{ggsplt2}和{dplyr},它们将无法运行。
作为一个具体的例子,dplyr的mutate
函数的数据帧方法的源代码的第一行包含以下行:
keep <- arg_match(.keep)
其中arg_match
是从rlang导入的。arg_match
的源代码包括对未导出rlang函数arg_match0
的调用,您可以在r控制台中通过执行以下操作来查看:
rlang:::arg_match0
#> function (arg, values, arg_nm = as_label(substitute(arg)))
#> {
#> .External(rlang_ext_arg_match0, arg, values, environment())
#> }
#> <bytecode: 0x00000258f4d35bd0>
#> <environment: namespace:rlang>
此.External
调用表示参数正在传递给注册在rlang.dll中的已编译C函数。
因此,如果没有rlang dll,就没有arg_match0
,也没有arg_match
,也就没有mutate
。很难想象在没有mutate
的情况下使用{dplyr}。当然,这只是一个例子。