【发布时间】:2018-04-08 03:14:11
【问题描述】:
我有一个小时和分钟的向量:
Date=format( seq.POSIXt(as.POSIXct("2016-01-01 05:55:00"), as.POSIXct("2016-01-01 21:55:00"), by = "15 min"), "%H:%M:%S", tz="Europe/Rome")
我想将该向量的元素(即Date[4])用作 grep 模式的一部分:
grep("2016-01-.. Date[4]", df$first)
我实际上正在尝试做这样的事情:
grep("2016-01-.. 09:25:00", df$first)
我错过了什么?
【问题讨论】:
-
grep没有对模式进行矢量化,因此您可以 (a) 使用循环(for、sapply等),(b) 在其上使用vectorize创建矢量化版本,(c) 使用类似的函数,如stringr::str_detect(),它在模式上进行了矢量化。在所有情况下,使用paste0构建模式向量paste0("2016-01-.. ", Date) -
我对 r 很陌生,所以请多多包涵。使用 for 循环没有帮助:
for(i in c(1:10)){ c<-grep("Date[i]", df$fist) }我不明白为什么它不将Date[i]视为普通字符串。 -
当您将
Date[i]放在引号中时,字符串就是"Date[i]"。要使用存储在变量Date[i]中的字符串,请勿使用引号:for(i in c(1:10)){ c<-grep(Date[i], df$fist) }。 (还有一个建议:不要使用c作为变量名。因为c()是最常见的函数,它可能会造成混淆。)