我有一个mycols的数据格式。您可以看到mycols有^SQN、^WES和^WGS列集。我想让SQN、WES和WGS列(我不想包含(Pile:up)$和:AD$列)按照相同的顺序(您可以看到每个组的扩展都是相同的)在mycols中创建三重态集。换句话说,我想创建一组具有相同扩展的SQN、WES和WGS。然后,我有一个名为myfunc的函数。我想把这个函数应用到这样形成的每一个三重集上。
mycols<- c("SQN:IDH2:G515T:R172M","WES:IDH2:G515T:R172M" ,"WES:IDH2:G515T:R172M:AD:(Pile:up)", "WGS:IDH2:G515T:R172M","SQN:JAK1:A1432T:T478S", "WES:JAK1:A1432T:T478S" ,"WES:JAK1:A1432T:T478S:AD:(pile:up)","WGS:JAK1:A1432T:T478S","SQN:JAK1:T1868C:V623A","WES:JAK1:T1868C:V623A","WES:JAK1:T1868C:V623A:AD","WES:JAK1:T1868C:V623A:AD:(Pile:up)", "WGS:JAK1:T1868C:V623A")结果:
triplet1
"SQN:IDH2:G515T:R172M", "WES:IDH2:G515T:R172M", "WGS:IDH2:G515T:R172M"
triplet2
"SQN:JAK1:A1432T:T478S","WES:JAK1:A1432T:T478S","WGS:JAK1:A1432T:T478S",
triplet3
"SQN:JAK1:T1868C:V623A","WES:JAK1:T1868C:V623A","WGS:JAK1:T1868C:V623A"所以我可以简单的把我的函数调用到triplet1,三元组2,triplet3.
发布于 2016-02-06 05:17:13
我们可以用grepl获得没有'P(p)ile:up‘或'AD’的字符串的逻辑索引。将“mycols”与“i1”进行子集。使用sub创建一个分组变量,方法是删除前缀部分,从字母字符开始,包括第一个:,然后split‘mycols1 1’。
i1 <- !grepl('(?i)(P)ile|AD$', mycols)
mycols1 <- mycols[i1]
split(mycols1, sub('[^:]+:', '', mycols1))
#$`IDH2:G515T:R172M`
#[1] "SQN:IDH2:G515T:R172M" "WES:IDH2:G515T:R172M" "WGS:IDH2:G515T:R172M"
#$`JAK1:A1432T:T478S`
#[1] "SQN:JAK1:A1432T:T478S" "WES:JAK1:A1432T:T478S" "WGS:JAK1:A1432T:T478S"
#$`JAK1:T1868C:V623A`
#[1] "SQN:JAK1:T1868C:V623A" "WES:JAK1:T1868C:V623A" "WGS:JAK1:T1868C:V623A"https://stackoverflow.com/questions/35237582
复制相似问题