假设我有10个data.frame
个名称中的日期,从01-01-00
到10-01-00
,其他字母和符号以ddmmyy
格式添加到结尾p>
例如 010100/sgh/d_3
和020100/aff/d_1
如果我想创建上述data.frame
的向量,有没有办法选择它们而不单独写出来?
我尝试创建一个日期序列的向量并将其放入pattern =
但是出现了错误(下面的代码):
Dates <- seq(as.Date("2000-01-01"),as.Date("2000-01-02"),1)
Dates <- format(Dates,"%d%m%y")
ls(pattern=Dates)
In grep(pattern, all.names, value = TRUE) :
argument 'pattern' has length > 1 and only the first element will be used
我假设该模式只能是一个值?
答案 0 :(得分:1)
创建一个匹配您想要的任何日期字符串的模式。一种方法是使用|
字符加入所有字符串:
> Dates <- seq(as.Date("2000-01-01"),as.Date("2000-01-10"),1)
> Dates
[1] "2000-01-01" "2000-01-02" "2000-01-03" "2000-01-04" "2000-01-05"
[6] "2000-01-06" "2000-01-07" "2000-01-08" "2000-01-09" "2000-01-10"
> D2 = paste(Dates,collapse="|")
> D2
[1] "2000-01-01|2000-01-02|2000-01-03|2000-01-04|2000-01-05|2000-01-06|2000-01-07|2000-01-08|2000-01-09|2000-01-10"
现在我的工作区中有各种各样的部分:
> ls()
[1] "d" "d010100foo" "d010110bar" "D2"
[5] "d2000-01-01bar" "d2000-01-10bar" "d2000-02-10foo" "Dates"
[9] "dorig" "j" "p" "x"
[13] "y" "z"
但如果我使用那种模式,我会得到与日期匹配的模式:
> ls(pattern=D2)
[1] "d2000-01-01bar" "d2000-01-10bar"
如果你有很多东西需要匹配,这可能会变得笨拙,但是那一点你可以编写一个更简单的正则表达式来匹配所有的东西 - 像[0-9]{4}-[0-9]{2}-[0-9]{2}
(未经测试的)应该匹配任何四位数,短划线,两位数,短划线,两位数序列。
调整图案以匹配您的日期格式。建议不要使用您使用的格式:https://xkcd.com/1179/