R:基于模式组合向量的两个元素

R:基于模式组合向量的两个元素,r,R,我想知道我如何可能添加一个函数,如“粘贴”以将向量的字符串(即字符)组合为新向量的一个新元素: 所以我的问题是这样的: a) 我的初始数据存储为txt文件 10_x_R1_001.fastq.gz 10_x_R2_001.fastq.gz 11_x_R1_001.fastq.gz 11_x_R2_001.fastq.gz 这些数据作为数据向量,比如 x= c("10_x_R1_001.fastq.gz", "10_x_R2_001.fastq.gz", "11_x_R1_001.fastq.

我想知道我如何可能添加一个函数,如“粘贴”以将向量的字符串(即字符)组合为新向量的一个新元素:

所以我的问题是这样的:

a) 我的初始数据存储为txt文件

10_x_R1_001.fastq.gz
10_x_R2_001.fastq.gz

11_x_R1_001.fastq.gz
11_x_R2_001.fastq.gz
这些数据作为数据向量,比如

x= c("10_x_R1_001.fastq.gz", "10_x_R2_001.fastq.gz", "11_x_R1_001.fastq.gz", "11_x_R2_001.fastq.gz")
因此,我的问题是,如何添加带有start/包含指示符“10”或“11”的元素作为新元素,以便结果如下所示

x= c("10_x_R1_001.fastq.gz 10_x_R2_001.fastq.gz", "11_x_R1_001.fastq.gz 11_x_R2_001.fastq.gz")
因为这两个元素总是相互使用nxt,所以我已经解决了zoo包的rollapply问题,但我想知道如何才能做到这一点


Thx

一种
基本R
方法是将前两个字符作为子串,在
tapply
paste
中将其用作分组变量

unname(tapply(x, substring(x, 1, 2), FUN = paste, collapse= ' '))
或者,如果数字可能不同且位数可变,则使用
sub

unname(tapply(x, sub("_.*", "", x), FUN = paste, collapse= " "))
#[1] "10_x_R1_001.fastq.gz 10_x_R2_001.fastq.gz" "11_x_R1_001.fastq.gz 11_x_R2_001.fastq.gz"

如果值始终相邻,则使用逻辑循环向量提取备用元素并粘贴在一起

paste(x[c(TRUE, FALSE)], x[c(FALSE, TRUE)])