我试图使用as.POSIXct()将unix纪元时间戳转换为日期时间对象
当我调用as.POSIXct()时,我需要指定时区(欧洲/伦敦或UTC).
如果我跑
> t<-as.POSIXct(1445329330, tz="Europe/London", origin="1970-01-01")
> t
Run Code Online (Sandbox Code Playgroud)
R返回"2015-10-20 09:22:10 BST"警告信息:1:在as.POSIXlt.POSIXct(x,tz):未知时区'默认/欧洲/伦敦'2:在as.POSIXlt.POSIXct( x,tz):未知时区'默认/欧洲/伦敦'
我已经尝试指定tz ="BST",但这也会返回警告
Warning messages:
1: In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'BST
'
2: In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'default/Europe/London'
3: In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'BST
'
4: In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'default/Europe/London'
Run Code Online (Sandbox Code Playgroud)
我根据Joshua Ulrich的帖子查找了zoneinfo/zone.tab,并且"Europe/London"确实出现在zone.tab文件中,而"BST"没有.所以我认为欧洲/伦敦应该是一个有效的tz选择.它是否正确?
有没有人有关于为什么我收到警告的建议,以及为什么没有将指定的时区分配给as.POSIXct对象?
应该注意的是,在将MacOS更新为High Sierra之前,调用as.POSIXct()的脚本在没有警告的情况下运行.操作系统更新是否会导致这些警告?当我运行Sys.timezone()时,它返回NA
提前谢谢了
鸢尾花
这个问题与将变量传递给使用 `enquo()` 的函数有关。
我有一个更高的函数,其参数为 tibble ( dat) 和 dat ( ) 中感兴趣的列variables_of_interest_in_dat。在该函数中,有一个对我想要传递给的另一个函数的调用variables_of_interest_in_dat。
higher_function <- function(dat, variables_of_interest_in_dat){
variables_of_interest_in_dat <- enquos(variables_of_interest_in_dat)
lower_function(dat, ???variables_of_interest_in_dat???)
}
lower_function <- function(dat, variables_of_interest_in_dat){
variables_of_interest_in_dat <- enquos(variables_of_interest_in_dat)
dat %>%
select(!!!variables_of_interest_in_dat)
}
Run Code Online (Sandbox Code Playgroud)
传递给 lower_function 的推荐方法是什么variables_of_interest_in_dat?
我已经尝试过lower_function(dat, !!!variables_of_interest_in_dat),但是当我运行时higher_function(mtcars, cyl)返回“错误:无法!!!在顶层使用。”
在相关帖子中,higher_function 在将变量传递给 lower 函数之前并未对变量进行 enquo。
谢谢