【发布时间】:2023-03-07 21:49:01
【问题描述】:
我有几个数据框,我想将特定的数据框合并到一个列表中以便于管理。
由于数据帧很多,我使用lapply()快速执行合并。
我的模式匹配(正则表达式)元素如下所示:
ls(pattern = "jan[0-9]")
返回:
[1] "jan0000" "jan0000_0059" "jan0100" "jan0100_0159" "jan0200" "jan0200_0259" "jan0300" "jan0300_0359" "jan0400" "jan0400_0459" "jan0500"
[12] "jan0500_0559" "jan0600" "jan0600_0659" "jan0700" "jan0700_0759" "jan0800" "jan0800_0859" "jan0900" "jan0900_0959" "jan1000" "jan1000_1059"
[23] "jan1100" "jan1100_1159" "jan1200" "jan1200_1259" "jan1300" "jan1300_1359" "jan1400" "jan1400_1459" "jan1500" "jan1500_1559" "jan1600"
[34] "jan1600_1659" "jan1700" "jan1700_1759" "jan1800" "jan1800_1859" "jan1900" "jan1900_1959" "jan2000" "jan2000_2059" "jan2100" "jan2100_2159"
[45] "jan2200" "jan2200_2259" "jan2300" "jan2300_2359"
但是,问题是我只想提取名称长度为 12 个字符的数据帧。
我尝试了很多方法,比如搜索一个确切的长度(我感兴趣的长度都是一样的):
ls(pattern = "jan[0-9]{12}")
但它会返回:
character(0)
我认为可行的另一种方法是搜索以jan 开头的任何内容,后跟四个数字,然后是一个下划线。问题是我似乎无法让正则表达式返回任何结果。
实现这一目标的最佳方法是什么?
【问题讨论】:
-
试试
ls(pattern = "^jan[0-9]{4}_") -
完美!请将此作为答案发布,以便我接受。