Ich kann mir wirklich vorstellen, dass die Antwort bei stackoverflow gefunden werden kann, aber dann verstehe ich es nicht. Also das ist meine Frage:R gelten für zwei Datenrahmen
Ich habe eine data.frame "tmp", die aus 17 Spalten und vielen Zeilen besteht. Was ich tun möchte, ist ca. Funktion zu verwenden, mit den Informationen aus tmp Zeile für Zeile der Funktion anwenden mit:
tmp[,17] <- apply(tmp[,4:16], 1, approx, y = y, x = tmp[,2])
wo y fix ist.
Mein Problem ist, dass ich jetzt eine n x n-Matrix bekomme, weil die Apply-Funktion jedes Paar tmp[,4:16]
und tmp[,2]
berechnet. Was ich brauche, ist nur die Diagonale, das heißt
(tmp[1,4:16], tmp[1,2]), (tmp[2,4:16], tmp[2,2]), (tmp[3,4:16], tmp[3,2]),...
Und ich möchte vermeiden Dinge wie diag(apply(...))
oder eine Schleife zu machen, weil ich will, Rechenzeit reduzieren.
Ich hoffe jemand kann mir helfen und vielen Dank im Voraus
Ist das möglich? 'approx (tmp [1,4: 16], tmp [1,2])' wirft 'Fehler in xy.coords (x, y, setLab = FALSE):' x 'und' y 'Längen unterscheiden sich. –
Sie benötigen die Knoten in der approximativen Funktion: 'approx (y, tmp [1,4: 16], tmp [1,2])' wobei y die gleiche Länge von tmp [1,4: 16] hat. In meiner Anwendungsfunktion verdrehte ich das 'y' und das' tmp [, 4: 16] 'und schrieb eine neue approximative Funktion, in der ich die Vektoren in der richtigen Reihenfolge einfügte, also' tmp [, 17] <- apply (tmp [, 4: 16], 1, approx2, y = y, x = tmp [, 2]) 'mit' approx2 <- Funktion (tmp, y, tmp2) {approx (y, tmp, tmp2) [[2] ]} ' – Chefkoch