2017-08-07 75 views
1

我操控着我的計數數據(FCM)和格式有我的條碼ID的列名:TCGA.BH.A0DQ.11A.12R.A089.07等吐痰字符串,然後將其粘貼在一起

我開始使用:

CountCol= colnames(fcm) 
Barcode = strsplit(as.character(CountCol), ".", fixed=TRUE) 

給我全部的分割字符串如列表:

head(Barcode,2) 
[[1]] 
[1] "TCGA" "3C" "AAAU" "01A" "11R" "A41B" "07" 

[[2]] 
[1] "TCGA" "3C" "AALI" "01A" "11R" "A41B" "07" 

我的問題是,現在我怎麼把只有前三種元素結合在一起,使新列名稱分隔b y a「 - 」(即TCGA-3C-AAAU爲第一個等等,接下來〜1200個值)

我希望這個很清楚。 我嘗試了一些方法,但仍然缺少正確的解決方案。

回答

2

嘗試sapply

sapply(Barcode,function(x){paste(x[1:3],collapse="-")}) 
+0

完美。我曾嘗試過,但我一直嘗試複雜的粘貼功能與循環等哈哈..多數民衆贊成在簡單,它正是我想要的。謝謝 –

+0

瞭解應用功能,他們很棒:)。同樣,如果你的條碼長度一直相同,你也可以結合使用'gsub'和'substr'來得到你的輸出 –

1

你也可以使用purrr庫更加簡化代碼:

library(purrr) 
 

 
x <- c("TCGA", "3C", "AAAU", "01A", "11R", "A41B", "07") 
 
y <- c("TCGA", "3C", "AALI", "01A", "11R", "A41B", "07") 
 
z <- list(x, y) 
 

 
purrr::map(z, ~paste(.[1:3], collapse = "-")) 
 

 
[[1]] 
 
[1] "TCGA-3C-AAAU" 
 

 
[[2]] 
 
[1] "TCGA-3C-AALI"

+0

在R的基礎上是'Map(paste,lapply(z,head,3),collapse =「 - 」 )' – thelatemail

相關問題