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

如何根据R中的前半部分对字符串进行分组?,r,R,我的R代码如下所示: files <- list.files(get_directory()) files <- files[grepl("*.dat$", files)] files 所以,现在我想根据第一部分创建2个组,所以我想2^5-3^3-18-simul.dat和2^5-3^3-18-uniform.dat成为一个组,其他两个文件成为一个组,等等。而在稍后的阶段,我需要遍历所有组,并使用同一组中的两个文件。由于返回的文件名已经排序,因此我不认为这里需要一些奇特的模式匹配,

我的R代码如下所示:

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

所以,现在我想根据第一部分创建2个组,所以我想
2^5-3^3-18-simul.dat
2^5-3^3-18-uniform.dat
成为一个组,其他两个文件成为一个组,等等。而在稍后的阶段,我需要遍历所有组,并使用同一组中的两个文件。由于返回的文件名已经排序,因此我不认为这里需要一些奇特的模式匹配,我只需要将字符串向量的元素按前面提到的两对二进行分组。

我们可以使用
sub
创建分组变量来拆分“文件”

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"
数据
文件
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")