我正在操纵我的计数数据(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"
我现在的问题是如何只将前三个元素组合在一起,使新的列名用“ - ”分隔(即TCGA-3C-AAAU为第一个,等等为下一个〜1200个值)
我希望这很清楚。 我尝试了一些方法,但仍未达到正确的解决方案。
答案 0 :(得分:2)
尝试sapply
sapply(Barcode,function(x){paste(x[1:3],collapse="-")})
答案 1 :(得分: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"