einen Datenrahmen (dat
) mit einer Spaltensequenz aufweist (Seq
) (Zeichenklasse). Ich versuche, die Reihenfolge in jeder Zeile aufzuteilen und die Zahlen von 'A'
, 'C'
, 'G'
, 'T'
zu zählen und jede Spalte mit mutieren hinzuzufügen (in dplyr
). Unten ist mein Beispiel Datenrahmen und Code, den ich versuche.Wie Gesamtzeichen Vorkommen in Datenrahmen zählen, und fügt in Spalte mutiert R unter Verwendung von I
Seq
CAGGACATAA
TGTCCACTGC
Code I auszuführen versuche:
count_bases <- function (x){
for(i in 1:length(x)){
tab[i] <- table(strsplit((x)[i],""))
}
return(tab)
}
count_bases(dat$Seq)
Wenn ich für die erste Zeile verwenden Sie einfach den Befehl: table(strsplit(dat$Seq[1],""))
es funktioniert gut und gibt mir das Ergebnis. Gewünschte Ausgabe, die ich versuche zu bekommen, ist durch obige Funktion und mutiert einen Datenrahmen erstellen unten dargestellt:
Seq A C G T
CAGGACATAA 5 2 2 1
TGTCCACTGC 1 4 2 3
So etwas wie 'do.call (rbind, lapply (dat $ Seq, Funktion (x) {table (strsplit (as.character (x), ""))}))'? – alistaire
Was ist mit 'cbind (dat, t (anwenden (dat, 1, Funktion (x) Tabelle (strsplit (x," ")))))? –
Vielen Dank für Ihre Antwort. Ich habe den obigen Code mit "do.call" ausprobiert und bekam diese Warnung "Warnmeldung: In (function (..., deparse.level = 1): Anzahl der Spalten des Ergebnisses ist kein Vielfaches der Vektorlänge (arg 54) "mache ich etwas nicht korrekt? Auch kann diese Funktion aufgerufen werden, um diese Spalten zu bestehenden Datenrahmen (dat) hinzuzufügen. Nochmals vielen Dank – rkg