Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在posixct向量上使用grep_R_Posixct - Fatal编程技术网

在posixct向量上使用grep

在posixct向量上使用grep,r,posixct,R,Posixct,我有多个日期时间列,我需要验证其中哪些在时区CEST dat <- structure(c(1491199401.363, 1491201912.62, 1491205392.67, 1491205933.457, 1491206198.027, 1491206802.243), class = c("POSIXct", "POSIXt"), tzone = "") dat #[1] "2017-04-03 08:03:21 CEST" "2017-04-03 08:45:12 CEST"

我有多个日期时间列,我需要验证其中哪些在时区CEST

dat <- structure(c(1491199401.363, 1491201912.62, 1491205392.67, 1491205933.457, 1491206198.027, 1491206802.243), class = c("POSIXct", "POSIXt"), tzone = "")
dat
#[1] "2017-04-03 08:03:21 CEST" "2017-04-03 08:45:12 CEST" [3]
#"2017-04-03 09:43:12 CEST" "2017-04-03 09:52:13 CEST" [5] "2017-04-03
#09:56:38 CEST" "2017-04-03 10:06:42 CEST"

any(grep("CEST", dat))
#[1] FALSE
any(grep("CEST", "2017-04-03 08:03:21 CEST"))
#[1] TRUE

dat我们可以使用
格式
提取时区,并使用%
中的
%来获取

"CEST" %in% format(dat, format="%Z")
#[1] TRUE
或者另一个选项是在转换到
POSIXlt
unclass
,并提取
区域

"CEST" %in% unclass(as.POSIXlt(dat))$zone
#[1] TRUE

在OP为
grep
ping的单个元素中,它是
字符
类,而
dat
POSIXct
类。因此,它将能够使用
grep
找到子字符串。即使我们将“dat”转换为
字符
,它也会丢失属性,即

as.character(dat)
#[1] "2017-04-03 08:03:21" "2017-04-03 08:45:12" "2017-04-03 09:43:12" "2017-04-03 09:52:13" "2017-04-03 09:56:38" "2017-04-03 10:06:42"
因此,
grep
将无法选择它

grepl("CEST", as.character(dat))
#[1] FALSE FALSE FALSE FALSE FALSE FALSE

我们可以使用
格式
提取时区,并使用%
中的
%来获取

"CEST" %in% format(dat, format="%Z")
#[1] TRUE
或者另一个选项是在转换到
POSIXlt
unclass
,并提取
区域

"CEST" %in% unclass(as.POSIXlt(dat))$zone
#[1] TRUE

在OP为
grep
ping的单个元素中,它是
字符
类,而
dat
POSIXct
类。因此,它将能够使用
grep
找到子字符串。即使我们将“dat”转换为
字符
,它也会丢失属性,即

as.character(dat)
#[1] "2017-04-03 08:03:21" "2017-04-03 08:45:12" "2017-04-03 09:43:12" "2017-04-03 09:52:13" "2017-04-03 09:56:38" "2017-04-03 10:06:42"
因此,
grep
将无法选择它

grepl("CEST", as.character(dat))
#[1] FALSE FALSE FALSE FALSE FALSE FALSE