rbind () gibt ein ungerades Ergebnis zurück

8

Das hat alle Anzeichen dafür, etwas so Triviales zu sein, dass ich es bereuen werde, es in einem öffentlichen Forum zu fragen, aber ich habe jetzt ein paar Leute damit überhäuft, also c'est la vie.

Ich führe den folgenden Codeblock aus und bekomme nicht das Ergebnis, das ich erwarte:

%Vor%

Ich hatte erwartet:

%Vor%

Stattdessen bekomme ich:

%Vor%

Es scheint, dass es den oberen Teil des rbind nach Zeile ausfüllt und am Ende eine Reihe von NULL-Werten hinzufügt.

Ein paar Anmerkungen:

  • Dies funktioniert AOK, solange headMat eine einzelne Zeile ist

  • Um zu überprüfen, ich habe auch die Dimnamen für PadMat los, dies hatte keinen Einfluss auf die Dinge

  • Ein anderer Gedanke war, dass es irgendwie mit byrow = TRUE zu tun hat, aber das gleiche Verhalten passiert, wenn Sie das herausnehmen

geoffjentry 20.06.2011, 19:11
quelle

3 Antworten

8

Das Problem scheint von der Tatsache herrühren, dass padMat eine seltsame Matrix ist. R meldet das ist eine Liste von 12 mit Dimensionen:

%Vor%

Das scheint die Ursache des Problems zu sein, da das Neuschreiben als Matrix funktioniert:

%Vor%     
Gavin Simpson 20.06.2011, 19:40
quelle
9

padMat ist eine Liste (mit einem Dim-Attribut), nicht das, was Sie normalerweise für eine Matrix halten.

%Vor%

Ich vermute, du möchtest etwas wie:

%Vor%

Die Lektion hier lautet: " str ist dein Freund." :)

    
Joshua Ulrich 20.06.2011 19:39
quelle
5

Andere haben richtigerweise darauf hingewiesen, dass padMat den Modus list hatte, was, wenn man die Dokumente für rbind und cbind betrachtet, schlecht ist:

%Vor%

Deshalb funktioniert do.call , da die Elemente von zz selbst Listen sind. Wenn Sie die Definition von zz wie folgt ändern:

%Vor%

Der Code funktioniert wie erwartet.

Mehr Einsicht kann ich aus diesem Nugget auch in den Dokumenten für rbind und cbind gewinnen:

%Vor%     
joran 20.06.2011 19:48
quelle

Tags und Links