R:基于模式组合向量的两个元素
我想知道我如何可能添加一个函数,如“粘贴”以将向量的字符串(即字符)组合为新向量的一个新元素: 所以我的问题是这样的: a) 我的初始数据存储为txt文件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.
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)])