Ich möchte einen leeren Datenrahmen und später Zeilenwerte hinzufügen. Die Art, wie ich einen Datenrahmen erstellen, ist der folgende:NA-Werte in einen Datenrahmen einfügen R
result_df <- data.frame("Hospital" = character(), "State" = character(), stringsAsFactors = FALSE)
Dann füge ich die erste Zeile:
result_df <- rbind(result_df, list("D W MCMILLAN MEMORIAL HOSPITAL", "AL"))
Genau wie zusätzliche Informationen, die ich Ihnen zeigen, das Ergebnis des folgenden Befehls ein:
str(result_df)
'data.frame': 1 obs. of 2 variables:
$ X.D.W.MCMILLAN.MEMORIAL.HOSPITAL.: Factor w/ 1 level "D W MCMILLAN MEMORIAL HOSPITAL": 1
$ X.AL. : Factor w/ 1 level "AL": 1
Dann füge I, die nächste Zeile zu dem Datenrahmen
result_df <- rbind(result_df, list("ARKANSAS METHODIST MEDICAL CENTER", "TX"))
und das ist, was ich bekommen:
Warning messages:
1: In `[<-.factor`(`*tmp*`, ri, value = "ARKANSAS METHODIST MEDICAL CENTER") :
invalid factor level, NA generated
2: In `[<-.factor`(`*tmp*`, ri, value = "TX") :
invalid factor level, NA generated
Wenn ich tippe result_df den Inhalt des Datenrahmens zu sehen, das ist das Ergebnis:
X.D.W.MCMILLAN.MEMORIAL.HOSPITAL. X.AL.
1 D W MCMILLAN MEMORIAL HOSPITAL AL
2 <NA> <NA>
Ich denke, das mit stringAsFactors gelöst werden konnte = FALSE Hat jemand eine Vorstellung von diesem Problem?
Verwenden Sie keine 'rbind' um Zeilen hinzuzufügen. Sie sollten die Größe Ihres 'dat.frame' vordefinieren und die Zeilenindizes verwenden, um sie zu füllen. Im Worst-Case-Szenario können Sie einfach Zeilen mit Indizes hinzufügen, z. B. 'result_df [1,] <- c (" DW MCMILLAN MEMORIAL HOSPITAL "," AL ")' und 'result_df [2,] <- c (" ARKANSAS METHODIST MEDIZINISCHES ZENTRUM "," TX ")'. Aber dann wird dies eine tiefe Kopie machen, stattdessen ist es immer besser, die Größe Ihres Datenrahmens a priori vorzugeben. –