gpt4 book ai didi

r - R 中的双冒号 (::) 是什么?

转载 作者:行者123 更新时间:2023-12-03 12:31:49 26 4
gpt4 key购买 nike

我正在学习 Rbloggers 中的教程,发现使用了双冒号,我在网上查看,但找不到对它们使用的解释。
这是它们的使用示例。

df <- dplyr::data_frame(
year = c(2015, NA, NA, NA),
trt = c("A", NA, "B", NA)
)

我知道它创建了一个数据框,但我不明白它们的目的。

最佳答案

因为您现在可能已经查看了帮助页面 :: 的用法。有助于从该特定包访问确切的功能。当您加载时 dplyr您可能收到如下消息。

The following objects are masked from ‘package:base’:
intersect, setdiff, setequal, union

因此,例如,如果您想使用 intersect来自 dplyr 或 base 包的函数,您需要使用 :: 指定双冒号。用法如下
mtcars$model <- rownames(mtcars)
first <- mtcars[1:20, ]
second <- mtcars[10:20, ]
dplyr::intersect(first, second)
base::intersect(first, second)

更新:添加了附加说明

注意:您加载库的顺序决定了特定功能的优先访问权限。不同包的开发者倾向于使用相同的函数名。但是,当 R 遇到一个函数时,它会按顺序运行特定 session 已加载的不同库。您可以通过运行 (.packages()) 检查 session 中的包。
 [1] "tidyr"      "data.table" "dplyr"      "stats"     
[5] "graphics" "grDevices" "utils" "datasets"
[9] "methods" "base"

正如您在我上面的示例 session 中看到的那样, tidyr是我加载的最后一个库,它是 r session 的第一个条目。因此,当您在代码中使用任何函数时,首先会在 tidyr 中搜索它-> 然后 data.table -> 然后 dplyr依此类推,最后是 base包被查了。因此,在此过程中,当包之间存在函数名称重叠时,最后加载的包会屏蔽前一包。为避免这种屏蔽,您可以在 R 代码中指定查找函数的位置。因此,这里 base::intersect , 将使用基础库中的函数而不是 dplyr .或者,您可以使用来避免加载完整的库。这有积极和消极的一面。阅读链接并了解更多信息。

运行并检查差异。
这里有一些资源供您了解。

Compare library(), require(), ::

Namespace

关于r - R 中的双冒号 (::) 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35240971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com