2017-07-03 3 views
0

Ich habe folgende Array in R:Array Organisieren in eine Spalte von jeder anderen Spalte, Zeile-für-Zeile

1 2 3 4 5 6 7 8 9 10 11 12 
A 0 0.7 0.9 0.8 0 0 0 0 0 0.1 0  0.1 
B 0.1 0.1 0 0.2 0 0.2 0.1 0 0 0.2 0  0.4 
C 0 0.4 0.1 0.3 0 0 0.4 0 0 0.3 0  0 

Ich mag diese Anordnung in eine Spalte R Code machen. Aber ich möchte, dass es von den ungeraden Spalten ausgeht, Zeile für Zeile geht, dann wieder zurückkehrt und die geraden Spalten Zeile für Zeile ausführt. Also in diesem Fall nach Spalte würde bestellt werden:

0, 0,9, 0, 0, 0, 0, (Zeile A, Spalten 1,3,5,7,9,11), gefolgt von 0,7, 0,8 und so in einer großen Kolumne.

+0

Sie Recycling eines logischen Vektor Sie also 'c (TRUE, FALSE)' und gegenüber der Teilmenge, die gerade/ungerade Spalten –

Antwort

0

Wenn das Array ist eine Matrix m, dann ...

t(m)[c(seq(1,length(m),2), 
     seq(2,length(m),2))] 

[1] 0.0 0.9 0.0 0.0 0.0 0.0 0.1 0.0 0.0 0.1 0.0 0.0 0.0 0.1 
[15] 0.0 0.4 0.0 0.0 0.7 0.8 0.0 0.0 0.1 0.1 0.1 0.2 0.2 0.0 
[29] 0.2 0.4 0.4 0.3 0.0 0.0 0.3 0.0 

Die oben funktioniert nur, wenn Sie eine gerade Anzahl von Spalten haben. Im allgemeineren Fall ist dies wahrscheinlich besser ...

c(t(m[,c(TRUE,FALSE)]),t(m[,c(FALSE,TRUE)])) 
+0

Vielen verwenden können, diese ist genau das, was ich gesucht habe. – GR1818

Verwandte Themen