根据子串拆分配对样本
split paired samples based on substring
我有两组配对样本,可以通过前两个字母分开。我想根据配对使用 [tn][abc]
.
之类的东西进行分组
Example of paired samples:
nb-008 ta-008
na015 ta-015
数据:
> colnames(data)
"nb-008" "nb-014" "na015" "na-018" "ta-008" "tc-014" "ta-015" "ta-018"
patient <- factor(sapply(str_split(colnames(data), '[tn][abc]'), function(x) x[[1]]))
我们可以用 sub
创建一个分组变量。我们从字符串 (^
) 的开头匹配 2 个字符 (..
) 的模式,然后是 -
(如果存在),然后是一个或多个字符 (.*
) 我们将其捕获为一个组(在括号内),并替换为反向引用 (\1
)。这可用于 split
列名。
split(colnames(data), sub('^..-?(.*)', '\1', colnames(data))))
#$`008`
#[1] "nb-008" "ta-008"
#$`014`
#[1] "nb-014" "tc-014"
#$`015`
#[1] "na015" "ta-015"
#$`018`
#[1] "na-018" "ta-018"
数据
v1 <- c("nb-008", "nb-014", "na015", "na-018",
"ta-008", "tc-014", "ta-015", "ta-018" )
set.seed(24)
data <- setNames(as.data.frame(matrix(sample(0:8, 8*5,
replace=TRUE), ncol=8)), v1)
我有两组配对样本,可以通过前两个字母分开。我想根据配对使用 [tn][abc]
.
Example of paired samples:
nb-008 ta-008
na015 ta-015
数据:
> colnames(data)
"nb-008" "nb-014" "na015" "na-018" "ta-008" "tc-014" "ta-015" "ta-018"
patient <- factor(sapply(str_split(colnames(data), '[tn][abc]'), function(x) x[[1]]))
我们可以用 sub
创建一个分组变量。我们从字符串 (^
) 的开头匹配 2 个字符 (..
) 的模式,然后是 -
(如果存在),然后是一个或多个字符 (.*
) 我们将其捕获为一个组(在括号内),并替换为反向引用 (\1
)。这可用于 split
列名。
split(colnames(data), sub('^..-?(.*)', '\1', colnames(data))))
#$`008`
#[1] "nb-008" "ta-008"
#$`014`
#[1] "nb-014" "tc-014"
#$`015`
#[1] "na015" "ta-015"
#$`018`
#[1] "na-018" "ta-018"
数据
v1 <- c("nb-008", "nb-014", "na015", "na-018",
"ta-008", "tc-014", "ta-015", "ta-018" )
set.seed(24)
data <- setNames(as.data.frame(matrix(sample(0:8, 8*5,
replace=TRUE), ncol=8)), v1)