如何根据R中的前半部分对字符串进行分组?
我的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成为一个组,其他两个文件成为一个组,等等。而在稍后的阶段,我需要遍历所有组,并使用同一组中的两个文件。由于返回的文件名已经排序,因此我不认为这里需要一些奇特的模式匹配,
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")