小编Iri*_*ren的帖子

R错误:带有as.POSIXct()的未知时区

我试图使用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

提前谢谢了

鸢尾花

datetime r

2
推荐指数
1
解决办法
4054
查看次数

将 enquo 表达式传递给子函数

这个问题与将变量传递给使用 `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。

谢谢

r tidyeval quasiquotes

0
推荐指数
1
解决办法
130
查看次数

标签 统计

r ×2

datetime ×1

quasiquotes ×1

tidyeval ×1