2016-08-23 4 views
-1

Ich wäre schockiert, wenn es keine einfache Lösung dafür gäbe, die Gesichtspalme wie ein Champion macht.Zeile im Datenrahmen durch benanntes Zeichen ersetzen Vektor

Ich baue eine DF von Farben, um eine Netzwerk-Grafikdatei zu erstellen. Wenn der Benutzer mit der GUI interagiert, werden bestimmte Zeilen so geändert, dass sie bestimmten Kanten- und Knotenfarben entsprechen.

Hier ist ein minimales Beispiel:

node_col_1 <- c(red=0, green=153, blue=255, alpha=1) 
node_col_2 <- c(red=163, green=160, blue=25, alpha=1) 

test_colors <- 
t(
    sapply(
    seq_len(5), 
    FUN= function(x) node_col_1 
) 
) 

So test_colors ist:

red green blue alpha 
[1,] 0 153 255  1 
[2,] 0 153 255  1 
[3,] 0 153 255  1 
[4,] 0 153 255  1 
[5,] 0 153 255  1 

Dann versuchen Reihen zu ersetzen 2 und 3:

> test_colors[c(2,3), ]<- node_col_2 

    red green blue alpha 
[1,] 0 153 255  1 
[2,] 163 25 163 25 
[3,] 160  1 160  1 
[4,] 0 153 255  1 
[5,] 0 153 255  1 

Diese ersetzt es spaltenweise (in der abgeflachten df) und nicht reihenweise. Gibt es einen einfachen Weg, diesen Ersatz zu machen?

+2

Was Sie dort haben, ist kein data.frame. Es ist eine Matrix. – Roland

+0

Ah. Das wäre bei all meinen ersten Versuchen ein großes Problem. \ * facepalm \ * – bigfoot56

Antwort

1

Whamp Whamp. Ich habe einen einfachen Weg gefunden. Wickeln Sie es in einer Matrix zuerst ....

> test_colors[c(2,3), ]<- matrix(node_col_2, nrow = 2, ncol =4, byrow = TRUE) 
> test_colors 
    red green blue alpha 
[1,] 0 153 255  1 
[2,] 163 160 25  1 
[3,] 163 160 25  1 
[4,] 0 153 255  1 
[5,] 0 153 255  1 
+1

Auch 'test_colors [c (2,3),] <- rep (node_col_2, each = 2)' sollte funktionieren. – jogo

Verwandte Themen