2017-01-27 8 views
1
gg.genes <- ggplot(genes.to.plot, aes(genes.x, genes.to.plot$START)) + 
    geom_text(size = 3, 
       hjust = -0.2, 
       vjust = 0, 
       aes(label = ""),   
       color = 'black', 
       data = subset(genes.to.plot, startsWith(genes.to.plot$GENE, "A")), 
       aes(label = genes.to.plot$GENE)) + 
    geom_segment(aes(xend=genes.x, yend=genes.to.plot$STOP), 
       arrow = arrow(length = unit(0.1, "cm"), 
           angle = 15), 
         colour = 'green4') + 
    labs(x="", y = "") + 
    theme_classic(base_size = 16) 

Also zeichne ich die Strand-Information über bestimmte Gene. Wenn Sie möchten, dass die Daten neu erstellen, die ich dies plotten bin mit, tun gerade:Bedingte Markierung, wenn die Substr-Bedingung erfüllt ist R

GENE START STOP STRAND 
A 1  2 + 
B 2  4 - 
AC 3  6 + 
DA 4  8 - 

Was mit Ich kämpfe die selektive Markierung ist, sondern insbesondere mit startsWith und subset.

Ich möchte nur die Etiketten für die Gene, die mit "A" beginnen, plotten. In meinem Fall (A und AC)

Aber wenn ich startet verwenden mit, erhalte ich die Fehlermeldung:

Error in startsWith(genes.to.plot$GENE, "A") : non-character object(s) 

Ich verstehe nicht, diesen Fehler, da ich die richtigen Informationen in der Fütterung bin Funktion

Ich bin sehr neu in der R, und ich erwarte einige downvotes aber können Sie mir mit dieser kleinen Sache helfen?

+0

'genes.to.plot' ist wahrscheinlich ein Faktor: vergleichen' startsWith ('apple', 'a'); startsWith (faktor ('apple'), 'a') ' – rawr

Antwort

0

Ihr genes.to.plot$GENE ist wahrscheinlich ein Faktor. Stellen Sie sicher, dass der Spaltentyp stattdessen character ist, um den Fehler zu vermeiden. Zum Beispiel:

genes.to.plot$GENE = as.character(genes.to.plot$GENE) 

Oder noch besser, machen Sie es nicht zu einem Faktor in erster Linie. Dies ist wahrscheinlich beim Erstellen Ihres data.frame automatisch passiert. Geben Sie das Argument stringsAsFactors = FALSE an, um dies zu vermeiden.

+0

' Fehler in as.vector (y): Versuch, Nicht-Funktion 'für diese Zeile anzuwenden' data = subset (genes.to.plot, startsWith (als. Charakter (genes.to.plot $ GENE), "A")) – Mixalis

+0

@Mixalis Hm, dieser genaue Code funktioniert für mich. Stellen Sie sicher, dass die Funktion 'as.character' in Ihrer R-Session nicht überschrieben wird. –

+0

Ihre Vermutung war richtig! Vielen Dank! – Mixalis

Verwandte Themen