【发布时间】:2014-12-30 09:09:23
【问题描述】:
是否有标准的 POSIX 符号可以让您忽略句子中的某些单词?
例如,考虑以下情况。
(x <- as.POSIXlt(Sys.time()))
# [1] "2014-11-03 08:24:39 PST"
fmt <- "Today is %A, %B %d %Y.\nThe time is %R and %S seconds."
cat(f <- format(x, fmt))
# Today is Monday, November 03 2014.
# The time is 08:24 and 39 seconds.
现在我想反转这个过程,使用f 返回一个与x 相同的对象。
希望与我创建它的方式相同。但是,我需要忽略一些单词,所以我可能有一个标准的 POSIX 符号来跳过格式化字符串中的单词。
我只知道如何使用grep 和strsplit 操作字符串。这是我目前用来获得所需结果的方法。
s <- sapply(c(fmt, f), strsplit, "[,. ]", USE.NAMES = FALSE)
vp <- vapply(s, function(x) {
paste(x[grep("[%]", s[[1]])], collapse = " ")
}, character(1))
strptime(vp[2], vp[1])
# [1] "2014-11-03 08:24:39 PST"
哪个有效。但是,在?strptime 中,我注意到字符串中有一些换行符和任意空格的符号。但我没有看到任何可以让你绕过的东西
单词。
%n- 输出换行,输入任意空格。%t- 输出制表符,输入任意空格。
是否存在用于跳过单词或短语的 POSIX 标准符号? 这种操作有没有更好的方法?
为了进一步澄清,我想从
> f
[1] "Today is Monday, November 03 2014.\nThe time is 08:24 and 39 seconds."
回到POSIXct 对象
[1] "2014-11-03 08:24:39 PST"
如果可能,仅使用 strptime 和/或 format。
【问题讨论】: