2017-09-13 2 views
0

Ich habe eine Metadatendatei als .tsv gespeichert, die ich in R lesen und als META speichern. Ich muss alle Zeilen extrahieren, die eine gegebene Zeichenfolge "männlich" enthalten, hier in der Variablen sample gespeichert.Mit R extrahieren alle Zeilen, die eine Zeichenfolge aus einer Variablen enthalten

Das vollständige Skript hat viele dieser Operationen und so ist es wichtig, dass ich das Muster in Beispiel unten speichern. Die Fehler sind in der Art, wie ich versuche zu grep.

IN <- "/home/zchadva/Scratch/output/cov" 

#metadata 
META <- read.table("/home/zchadva/Scratch/data/hipsci/rnaseq/hipsci.qc1_sample_info.20160926.tsv", header = TRUE, sep = "\t") 

#Set study/table variables 
sample <- "\\<male\\>" 
control <- "female" 

#Grep all rows containing "male" from the table META 
sample.list <- META[grep(sample, META, value=TRUE)] 

EDIT: Das hat mich näher

im Idealfall ein coloumn jedes Mal, wenn ich eine Mustersuche tun, müssen angeben, ich will nicht META$Gender verwenden, wie unsere reale Metadatendatei humungous ist. Wenn ich nicht angeben müssen, würde Ich mag Gender in einer Variablen haben

sample.list <- (META[grep(sample, META$Gender), ] 

Zum Beispiel:

**coloumn** <- Gender 
sample.list <- (META[grepl(sample, META$**coloumn**), ] 

#Table example simplified 
ID Disease Gender Cell 
JX1 ibd  male  liver 
PTY healthy male  liver 
HB3 ibd  female brain 
PO3 bbs  male  

#Desired layout in sample.list 
JX1 ibd  male  liver 
PTY healthy male  liver 
PO3 bbs  male  

jede Hilfe sehr dankbar. Ich habe versucht, dies für Stunden zu tun

+0

so nah! Gib META [grepl (Probe, META $ Gender),] einen Versuch. – Benjamin

+0

Ich versuchte dies früher, aber es gab nur meine erste Zeile (Header) zurück. Jedes Etikett auf dem Header getrennt ist jedoch die Ausgabe dieses Befehls Spieße es aus als: [1] Name cell_type [3] derived_from Spender [5] biosample_id tissue_biosample_id [7] donor_biosample_id derived_from_cell_type –

+0

Im oben genannten Beispiel wäre es sehe so aus: [1] ID [2] Krankheit [3] Geschlecht [4] Zelle –

Antwort

1

grepl wird Ihnen bessere Ergebnisse als grep geben, da Sie den logischen Vektor verwenden können, um Ihren Datenrahmen zu indizieren.

META <- 
    data.frame(ID = c("JX1", "PTY", "HB3", "PO3"), 
      Disease = c("ibd", "healthy", "ibd", "bbs"), 
      Gender = c("male", "male", "female", "male"), 
      Cell = c("liver", "liver", "brain", "liver")) 

sample <- "male" 
control <- "female" 

META[grepl("^male", META$Gender), ] 

    ID Disease Gender Cell 
1 JX1  ibd male liver 
2 PTY healthy male liver 
4 PO3  bbs male liver 
+0

Vielen Dank für die Hilfe, Entschuldigung, ich bin ein total R noob, will nur diese Dinge überprüfen: –

+0

Vielen Dank für die Hilfe, Sorry, ich bin ein total R noob, will nur diese Dinge überprüfen: -Die Metadaten-Tabelle ist enorm, müsste ich den data.frame (ID ...) Snip verwenden, den Sie dort haben? - META [grepl ("^ männlich", META $ Gender),] Habe dies nur in Befehl ausgeführt und es gab mir nur meine Kopfzeile, die kein "male" enthält - Ideal in "META [grepl ("^ männlich", META $ Gender), "" anstatt männlich zu schreiben, würde ich gerne eine Probe anfragen. Ich werde das Skript erneut mit verschiedenen Variablen wie Krankheit, Zelle usw. ausführen, und es ist sauberer, wenn ich nur 1 Bit Text ändern muss –

Verwandte Themen