Windows 中没有 rlang.dll 的 ggplot、dplyr 等?
ggplot, dplyr etc in Windows without rlang.dll?
在 Windows 和 tidyverse 的 R 中,如果我分别安装和加载 dyplyr、magrittr 和 ggplot2 等库,rlang.dll 做了什么?没有它我能做什么?
文件 rlang.dll 是一个二进制文件,其中包含已编译的 C 代码,rlang 会调用这些代码来完成其某些工作。由于 {dplyr} 和 {ggplot2} 都从 rlang 导入函数,这使得 rlang 成为两个包的硬依赖,这意味着这些包不能 运行 没有它。如果您专门尝试在没有硬依赖的情况下安装 {ggplot2} 和 {dplyr},它们不会 运行.
作为一个具体的例子,dplyr的mutate
函数的数据框方法source code的第一行包含这一行:
keep <- arg_match(.keep)
其中 arg_match
是从 rlang 导入的。 arg_match
的 source code
包括对 non-exported 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}。当然,这只是一个例子。
在 Windows 和 tidyverse 的 R 中,如果我分别安装和加载 dyplyr、magrittr 和 ggplot2 等库,rlang.dll 做了什么?没有它我能做什么?
文件 rlang.dll 是一个二进制文件,其中包含已编译的 C 代码,rlang 会调用这些代码来完成其某些工作。由于 {dplyr} 和 {ggplot2} 都从 rlang 导入函数,这使得 rlang 成为两个包的硬依赖,这意味着这些包不能 运行 没有它。如果您专门尝试在没有硬依赖的情况下安装 {ggplot2} 和 {dplyr},它们不会 运行.
作为一个具体的例子,dplyr的mutate
函数的数据框方法source code的第一行包含这一行:
keep <- arg_match(.keep)
其中 arg_match
是从 rlang 导入的。 arg_match
的 source code
包括对 non-exported 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}。当然,这只是一个例子。