gpt4 book ai didi

r - 加载 Data.Table 后遮盖的润滑对象

转载 作者:行者123 更新时间:2023-12-05 09:21:45 24 4
gpt4 key购买 nike

当我在加载 lubridate 包后加载 data.table 包时,我收到以下错误消息:

Loading required package: data.table
data.table 1.9.4 For help type: ?data.table
*** NB: by=.EACHI is now explicit. See README to restore previous behaviour.

Attaching package: ‘data.table’

The following objects are masked from ‘package:lubridate’:

hour, mday, month, quarter, wday, week, yday, year

有谁知道 a) 是什么导致了这个问题以及 b) 如何防止 lubridate 中的这些对象被屏蔽?

更新:

与上述相关的问题是,我正在使用 lubridate 包中的 quarter 函数,并且在加载 data.table 包,我不能再用同样的方式这样做了。

具体来说,当我运行 quarter(Date, with_year=TRUE)(其中 Date 是 class = Dates 的向量)时,我现在收到以下错误:季度错误(日期,with_year = TRUE):未使用的参数(with_year = TRUE)

如果我只是quarter(Date),那么我可以在没有附加年份的情况下获得所需的输出。例如,如果 Date 简单设置为 2015 年 5 月 15 日(今天),则 quarter(Date) 将产生 2(因为我们re 在 2015 年第二季度),但我希望它产生 2015.2,因此 with_year = TRUE 选项很重要。

显然,我可以通过使用 paste 将年份和 quarter(Date) 的输出绑定(bind)在一起来克服这个问题,但我宁愿避免这种工作 -大约。

最佳答案

当使用相同名称定义新对象时,包命名空间中的对象名称将被屏蔽。这可以通过用户分配名称或附加具有相同名称对象的另一个包来完成。

data.tablelubridate 具有重叠的函数名称。如果你希望 lubridate 版本是默认的,那么最简单的解决方案是先加载 data.table,然后加载 lubridate---因此,这些函数的 data.table 版本将被“较新”的 lubridate 版本掩盖。

library(data.table)
library(lubridate)

否则,解决方案是使用 ::(如 package::function 中)来完全指定要使用的函数版本,例如:

lubridate::quarter(Date, with_year = T)

另一个选项,涉及的输入少一些,但可能也不太清楚,是在脚本开头为全局环境中所需的 lubridate 函数添加别名。

quarter = lubridate::quarter

脚本后面对 quarter() 的任何使用都将使用该函数的 lubridate 版本。

还有一个选择是 conflicted 包,它提供了一个系统,可以从一个包中选择一个函数。它有点更强烈和有意,你一定要在使用它之前阅读文档,但你的脚本可能包含如下内容:

library(conflicted)
conflict_prefer("quarter", "lubridate")

关于r - 加载 Data.Table 后遮盖的润滑对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30249863/

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