如何根据R的前半部分对字符串进行分组?

时间:2018-04-12 13:09:52

标签: r

我有一个如下所示的R代码​​:

files <- list.files(get_directory())
files <- files[grepl("*.dat$", files)]
files

其中get_directory()是我写的函数,它返回当前目录。所以,我在所需的目录中获取了扩展名为.dat的所有文件。但是,我的文件名称如下:

2^5-3^3-18-simul.dat
2^5-3^3-18-uniform.dat
2^7-3^4-33-simul.dat
2^7-3^4-33-uniform.dat
...

所以,现在我想根据第一部分创建2个组,所以我希望2^5-3^3-18-simul.dat2^5-3^3-18-uniform.dat是一个组,另外两个文件是一组等等。阶段,我需要循环遍历所有组,并使用同一组中的两个文件。因为,返回的文件名已经排序了,我认为我不需要在这里进行一些花哨的模式匹配,我只需要按照提到的方法将字符串向量的元素分组两个。

1 个答案:

答案 0 :(得分:2)

我们可以使用sub创建分组变量来分割&#39;文件&#39;

split(files, sub("-[a-z].*", "", files))
#$`2^5-3^3-18`
#[1] "2^5-3^3-18-simul.dat"   "2^5-3^3-18-uniform.dat"

#$`2^7-3^4-33`
#[1] "2^7-3^4-33-simul.dat"   "2^7-3^4-33-uniform.dat"

数据

files <-  c("2^5-3^3-18-simul.dat", "2^5-3^3-18-uniform.dat", 
             "2^7-3^4-33-simul.dat", "2^7-3^4-33-uniform.dat")