我有两组配对样本,可以用前两个字母分隔。我想基于配对使用[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]]))
答案 0 :(得分:1)
我们可以使用sub
创建分组变量。我们匹配字符串(..
)后面的2个字符(^
)的模式,后跟-
(如果存在),后跟一个或多个字符({{1} })我们捕获为一个组(在括号内),并由反向引用(.*
)替换。这可用于\\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"