/ / Wie man Spaltennamen bei der Verwendung von as.data.frame - r behält

Wie man Spaltennamen bei der Verwendung von as.data.frame - r behält

Ich versuche, Liste in Datenrahmen umzuwandeln, und ändert Spaltennamen. Liste sieht wie aus

ids

Name1      Name2
"CatValue" 6

wenn ich renne as.data.frame(ids, optional = FALSE) es ändert sich zu:

ids.Name1      ids.Name2
"CatValue"     6

Aber es sollte gleich bleiben.

Wie vermeide ich das? Ich dachte, dass das optionale Argument helfen würde, aber wie du sehen kannst, ist es nicht passiert.

BEARBEITEN: Ich sehe, dass es nicht klar genug war, also werde ich versuchen, dir ein großes Bild zu zeigen.

Ich habe scrapper geschrieben, der Datenrahmen zu Wert wie id0001, id0002 etc. zuordnet. Ich möchte diese Datenrahmen in for-Schleife verwenden, also verwende ich Code wie diesen, um zu ihnen zu gelangen table<-mget(ids0001) und typeof(table) ist Liste (keine Ahnung warum). Ich muss dies in data.frame umwandeln (damit meine Schleife funktioniert).

Das Problem ist, was zugewiesen ist table sollte Tabelle nicht Liste sein (und es war, bevor ich benutze mget().

beide, meine erste data.frame, list und data.frame nach der Verwendung von mget () sehen so aus, das Problem ist as.data.frame hinzugefügt ids0001. zum Spaltennamen.

 GAME_ID E VENTNUM EVENTMSGTYP EVENTMSGACTIONTYPE   PERIOD   WCTIMESTRING
1 0021500001 0       12            0                    1       8:12 PM
2 0021500001 1       10            0                    1       8:12 PM
3 0021500001 2        2           42                    1       8:13 PM
4 0021500001 3        4            0                    1       8:13 PM
5 0021500001 4        5           45                    1       8:13 PM
6 0021500001 5        1           80                    1       8:13 PM

EDIT 2: Jetzt kann ich sehen, dass mget () eine Liste wie unten erstellt. es war zu lang und das habe ich vermisst

 id0001$
GAME_ID E VENTNUM EVENTMSGTYP EVENTMSGACTIONTYPE   PERIOD   WCTIMESTRING
1 0021500001 0       12            0                    1       8:12 PM
2 0021500001 1       10            0                    1       8:12 PM
3 0021500001 2        2           42                    1       8:13 PM
4 0021500001 3        4            0                    1       8:13 PM
5 0021500001 4        5           45                    1       8:13 PM
6 0021500001 5        1           80                    1       8:13 PM

Antworten:

2 für die Antwort № 1

Wenn Sie angeben können, wie Sie die Liste erstellt haben, ist dies hilfreich. Ich habe versucht, deine Liste (oder eher fast) zu replizieren. Um die standardmäßige Namensgebung für entartete Argumente zu vermeiden, können Sie einen Namen angeben value = ids$ids.

ids = list(ids = c(Name1 = "CatValue", Name2 = 6))
b <- data.frame(value = ids$ids)
t(b)

Ausgabe

      Name1      Name2
value "CatValue" "6"

1 für die Antwort № 2

Akrun und Rawr haben Recht. ich benutzte ids[[1]] und es hat das Problem gelöst. Danke Jungs.


0 für die Antwort № 3

Ich habe Folgendes versucht:

> listSample <- list(Name1 = "catValue", Name2 = 6)
> listSample
$Name1
[1] "catValue"

$Name2
[1] 6

> listAsDF <- as.data.frame(listSample)
> listAsDF
Name1 Name2
1 catValue     6

Ohne zu sehen, wie Sie Ihre Liste erstellt haben, bin ichnicht sicher, warum du etwas anderes hast. Wenn ich die Liste nicht auf die Art und Weise erstellt hätte, die ich gemacht hätte, und zu einem DF geändert hätte, hätte R ein Präfix (d. H. "X") zu "catValue" und 6 hinzugefügt, so dass meine Spaltennamen X.catValue und X6 wären.