ich ein Problem mit einigen meiner Code hatte und ich es fest, aber nicht vollständig verstehen, warum der Fehler ein FehlerR typisieren NA vs String
warDer Code sah aus wie:
for(i in 1:3){df = rbind.fill(z, data.frame(id=i,
data=if(is.null(x$results[[i]]$synopsis$data))
{NA}else{x$results[[i]]$synopsis$data}))}
Die Problem, das ich hatte war, wenn der erste Datenwert tatsächlich Null war, würde ich NA
bekommen, aber dann für die zweite und dritte würde ich entweder eine andere NA
bekommen oder wenn es Daten gab, würde ich es nicht bekommen, würde ich 1
bekommen.
Wenn der erste Wert Daten wäre, dann würde ich die Daten bekommen und für die anderen beiden würde ich entweder NA
oder die richtigen Daten bekommen.
Ich bin kein Computerwissenschaftler, aber ein Entwickler, der neben mir sitzt (aber R nicht weiß), schlug vor, dass es etwas mit verschiedenen Typumwandlungen von NA
und einer Zeichenkette zu tun hatte. Um das Problem zu lösen, habe ich die NA
in "0"
geändert (ich nehme an, "NA"
würde auch funktionieren).
Ich möchte nur eine gründlichere Erklärung, was passiert ist. Mein Laie Verständnis ist, wenn NA
das erste Ergebnis war, dann ist jedes Ergebnis in diesem "Format", wo etwas entweder NA
oder nicht ist und nicht als 1
behandelt wird, die ein bisschen wie eine boolesche Antwort ist?
Beispiel:
my.list <- list(list(),structure(
list(
experience = structure(
list(
start = "Hi"
),.Names = c("start")),
`_meta` = structure(
list(weight = 1L, `_sources` = list(structure(
list(`_origin` = "a"), .Names = "_origin"
))),.Names = c("weight", "_sources"))),.Names = c("experience", "_meta")))
my.list[[1]]$experience$start
NULL
my.list[[2]]$experience$start
[1] "Hi"
df <- NULL
for(i in 1:2){df = rbind.fill(df, data.frame(id=i,
data=if(is.null(my.list[[i]]$experience$start))
{NA}else{my.list[[i]]$experience$start}))}
Dann
df2 <- NULL
for(i in 1:2){df2 = rbind.fill(df2, data.frame(id=i,
data=if(is.null(my.list[[i]]$experience$start))
{"NA"}else{my.list[[i]]$experience$start}))}
Ergebnisse:
df: df2:
id data id data
1 NA 1 NA
2 1 2 HI
Was ist das erwartete Ergebnis für 'df'? Nur eine Zeile mit der Erfahrung Start ID2 "Hallo" oder zwei Zeilen? –
aktualisiert mit Ergebnissen - df1 ist falsch, und ich würde gerne wissen, warum – Olivia