2017-08-07 1 views
1

ich meine Zählerdaten manipuliert (FCM) und hatte meinen Barcode-IDs als Spaltennamen im Format: TCGA.BH.A0DQ.11A.12R.A089.07 etcSpucken Zeichenkette es dann Einfügen zusammen

ich ging zu verwenden:

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

mir geben eine Liste aller geteilten Zeichenketten wie:

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

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

Meine Frage ist nun, wie stelle ich nur die ersten drei Elemente zusammen, um neue Spalte zu machen Namen getrennt b y ein "-" (d.h. TCGA-3C-AAAU für die erste und so weiter für die nächsten ~ 1200 Werte)

Ich hoffe, das war klar. Ich habe ein paar Methoden ausprobiert, aber immer wieder die richtige Lösung.

Antwort

2

versuchen sapply

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

perfekt. Ich habe das ausprobiert, aber ich habe immer wieder versucht, komplexe Paste-Funktionen mit for-Schleifen zu verwenden, haha ​​... das ist einfach und es macht genau das, was ich will. danke –

+0

lernen über anwenden Funktionen, sie sind toll :). Auch wenn Ihre Barcodes immer die gleiche Länge haben, können Sie auch 'gsub' und' substr' kombinieren, um Ihre Ausgabe zu erhalten. –

1

Sie auch die purrr Bibliothek für einen vereinfachten Code verwenden:

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

In der Basis R sprechen Sie 'Map (einfügen, lapply (z, head, 3), collapse =" - ") ' – thelatemail

Verwandte Themen