2017-12-10 1 views
0

diese Zeichenfolge verwenden:Schrieben eine Funktion gsub für die Eingabe aufzunehmen und gibt einen Teil

dna_string 
[1] "ACCTGTCATCATCCCGCTCGCTTA" 

Ich versuche, eine Funktion zu schreiben, die „T“ mit „U“ und Ausgang das Ergebnis als Drillinge ersetzen, z.B "ACC" "TGT" und so weiter.

Die Funktion ich begonnen habe zu schreiben ist:

dna_converter <- function(gsub("T", "U", x=dna_string)){ 
    rna_triplets <- substring(dna_string, seq(1, 22, 3), seq(3, 24, 3)) 
    return(rna_triplets) 
} 

ich eine Störung erhalte und R werden die Ergebnisse nicht wie gewünscht ausgegeben. Könnten Sie mir bitte sagen, wo ich hier falsch liegen könnte?

Antwort

1

Spezifikation Ihrer Funktion Argumente ist seltsam - das ist, wie ich es tun würde:

dna_string <- "ACCTGTCATCATCCCGCTCGCTTA" 
dna_converter <- function(x = dna_string, From = "T", To = "U", By = 3) { 
    foo <- nchar(x) 
    substring(gsub(From, To, x), 
       seq(1, foo - 1, By), 
       seq(By, foo, By)) 
} 
dna_converter() 
[1] "ACC" "UGU" "CAU" "CAU" "CCC" "GCU" "CGC" "UUA" 
0

Sie versuchen, den Körper der Funktion als Funktionsargument zu setzen. Funktionen sind definiert als

Find <- function(argument){ 
     Body 
     } 

Versuchen:

dna_converter <- function(input_string){ 
gsub("T", "U", x=input_string) 
rna_triplets<-substring(input_string, seq(1, 22, 3), seq(3, 24, 3)) 
return(rna_triplets) 
} 

Triplets <- dna_converter(dna_string) 

Der Teil Argument werden gereinigt sollten nicht eine bestimmte Länge zu spezifizieren und nur in Stücke geschnitten von 3, aber ich bin auf meinem Handy und kann‘ t probier es in R aus. Werde diese Antwort später aufräumen!

+0

Das ist großartig, vielen Dank! –

Verwandte Themen