使用force_tz()时出现未使用参数错误的技术求助
问题:force_tz函数报错“unused arguments”
运行的代码
d <- "2015-01-01 09:00" timezone <- "America/Santiago" force_tz(time=ymd_hm(d), tzone=timezone)
错误信息
Error in force_tz(time = ymd_hm(d), tzone = timezone) : unused arguments (time = ymd_hm(d), tzone = timezone)
环境信息
R version 4.3.2 (2023-10-31) Platform: x86_64-apple-darwin20 (64-bit) Running under: macOS Sonoma 14.4.1 Matrix products: default BLAS: /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRblas.0.dylib LAPACK: /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRlapack.dylib; LAPACK version 3.11.0 locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 time zone: America/Los_Angeles tzcode source: internal lubridate version ‘1.9.3’
已尝试操作
- 更换不同时区
- 卸载并重装lubridate包
原因分析
报错核心是使用了错误的参数名。lubridate包中force_tz函数的第一个参数名称是x(待转换时区的日期时间对象),而非你写的time。虽然tzone是正确的参数名,但由于time不是函数定义中的参数,R会判定这是未使用的参数,从而抛出错误。
解决办法
只需修正参数名,或直接按位置传递参数即可:
方法1:使用正确的参数名
force_tz(x = ymd_hm(d), tzone = timezone)
方法2:按位置传递参数(省略参数名)
force_tz(ymd_hm(d), timezone)
两种写法都能正常运行,将解析后的日期时间对象转换为指定的America/Santiago时区。
内容的提问来源于stack exchange,提问作者RB1
相关产品推荐
相关产品推荐

