2 Stimmen

unerwartetes Verhalten von replace

Ich brauche Hilfe bei der replace() Befehl

replace(c(3,2,2,1),1:3,4:6)

Ich erwartete eine Ausgabe von 6,5,5,4 aber bekam 4,5,6,1

Was mache ich falsch?

Mein Verständnis von was ersetzen ist dies: es sieht Indexwerte von Elementen des ersten Arguments im zweiten Argument (z.B. 3 ist das 3. Element in 1:3) und dann ersetzt es mit Elementen im dritten Argument mit dem gleichen Index (z.B. 3. Element in 4:6 ist 6 so der Grund für mich erwarten das erste Element im Vektor zu sein 6)

Ich danke Ihnen. (Hilfedatei ersetzen hat kein Beispiel... muss hier um Klärung bitten)

6voto

James Punkte 63228

Während replace nicht das gewünschte Verhalten hervorruft, ist es recht einfach, das zu erreichen, was Sie beabsichtigt haben, indem Sie match :

new[match(x,i)]

4voto

mropa Punkte 10904

Das alles steht in der Beschreibung von replace() lesen Sie einfach aufmerksam:

 ‘replace’ replaces the values in ‘x’ with indices given in ‘list’
 by those given in ‘values’. If necessary, the values in ‘values’
 are recycled.

x <- c(3, 2, 2, 1)
i <- 1:3
new <- 4:6

Das bedeutet also in Ihrem Fall:

x[i] <- new

2voto

Marco Punkte 9044

Dieser Befehl besagt, dass man den Vektor c(3, 2, 2, 1) nimmt und die Komponenten mit den Indizes 1:3 durch die Werte des Vektors 4:6 ersetzt. Dies ergibt c(4, 5, 6, 1).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X