r-ggplot,dplyr等在没有rlang.dll的Windows中



在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}。当然,这只是一个例子。

最新更新