我给出如下特征向量:更换日期的特征向量,以特定的格式
"On the evening of 2017-04-23, I was too tired"
"to complete my homework that was due on 24.04.2017."
我需要通过它来搜索日期的所有出现,并与格式MONTHNAME d,YYYY替换它们。
我知道一般格式应该是%B%d,%Y,我可能必须使用sub()
函数,但我不太确定如何将两者结合在一起。
当我尝试像
sub("[0-9]{2}.[0-9]{2}.[0-9]{4}","%B %d, %Y",x)
我刚刚得到以下结果
"On the evening of 2001-01-15, I was too tired to complete my homework that was due on %B %d, %Y."
可能有人请帮助我弄清楚如何把它一起?
我与同伴stackoverflowers的帮助下新的代码如下:
streamlineDates(x)
{
#set pattern to dates in form of YYYY-MM-DD or DD.MM.YYYY
pattern <- "\\d{2,4}[.-]\\d{2}[.-]\\d{2,4}"
y <- c(x)
val <- unlist(regmatches(y, gregexpr(pattern, y)))
val1 <- as.Date(val,format=c("%Y-%m-%d","%d.%m.%Y"))
val2 <- format(val1,"%B %d, %Y")
y1 <- list()
for (i in 1:length(y)){
y1[i] <- gsub(pattern,val2[i],y[i])
}
}
然而,当我只输入:
x <- "to complete my homework that was due on 24.04.2017."
...它只返回NA。我已将问题范围缩小到gsub
,其中替换值值,“如果NA,则结果中对应于匹配的所有元素将被设置为NA”。因此,当仅输入最后一行时缺少第一个日期,它仅返回NA。
我该如何让它接受一个或两个日期?
数据格式(例如, '%B%d%Y')不能用在'sub'或'gsub'函数中,它必须用在'as.Date'中。 – emilliman5
@ sooki-sooki看到我的解决方案,我希望这有助于。谢谢 – PKumar