So beheben sie das problem in r: fehlende werte sind in indizierten zuweisungen nicht zulässig
Eine Fehlermeldung, die bei der Verwendung von R auftreten kann, ist:
Error in `[<-.data.frame`(`*tmp*`, df$A == 5, , value = list(A = c(NA, : missing values are not allowed in subscripted assignments of data frames
Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, Werte in einer Spalte mithilfe von Werten aus einer anderen Spalte zuzuweisen, NA- Werte jedoch vorhanden sind.
Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.
So reproduzieren Sie den Fehler
Angenommen, wir erstellen den folgenden Datenrahmen in R:
#create data frame
df <- data. frame (A=c(3, 4, 4, NA, 5, 8, 5, 9),
B=c(12, 13, 7, 7, 12, 11, 15, 7))
#view data frame
df
AB
1 3 12
2 4 13
3 4 7
4 NA 7
5 5 12
6 8 11
7 5 15
8 9 7
Nehmen wir nun an, wir versuchen, jeder Zeile in Spalte B einen Wert von 10 zuzuweisen, wobei der entsprechende Wert in Spalte A 5 ist:
#attempt to assign column B a value of 10 where A is equal to 5
df[df$A == 5, ]$B <- 10
Error in `[<-.data.frame`(`*tmp*`, df$A == 5, , value = list(A = c(NA, :
missing values are not allowed in subscripted assignments of data frames
Wir erhalten eine Fehlermeldung, weil in Spalte A NA-Werte vorhanden sind und die Fehlermeldung uns explizit mitteilt, dass fehlende Werte in tiefgestellten Zuweisungen von Datenrahmen nicht zulässig sind .
So vermeiden Sie den Fehler
Es gibt zwei Möglichkeiten, diesen Fehler zu vermeiden.
1. Verwenden Sie den %in%-Operator
Eine Möglichkeit, diesen Fehler zu vermeiden, besteht darin, bei der Zuweisung den %in% -Operator zu verwenden:
#assign column B a value of 10 where A is equal to 5 df[df$A %in% 5,]$B <- 10 #view updated data frame df AB 1 3 12 2 4 13 3 4 7 4 NA 7 5 5 10 6 8 11 7 5 10 8 9 7
Beachten Sie, dass jeder Zeile in Spalte B ein Wert von 10 zugewiesen wurde, wobei der entsprechende Wert in Spalte A 5 ist und wir keine Fehler erhalten.
2. Verwenden Sie is.na()
Eine andere Möglichkeit, diesen Fehler zu vermeiden, besteht darin, bei der Zuweisung die Funktion is.na() zu verwenden:
#assign column B a value of 10 where A is equal to 5
df[!is. na (df$A) & df$A == 5, ]$B <- 10
#view updated data frame
df
AB
1 3 12
2 4 13
3 4 7
4 NA 7
5 5 10
6 8 11
7 5 10
8 9 7
Auch hier können wir jeder Zeile in Spalte B einen Wert von 10 zuweisen, wobei der entsprechende Wert in Spalte A 5 ist, und wir erhalten keine Fehler.
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in R beheben können:
So beheben Sie das Problem in R: Argumente umfassen eine unterschiedliche Anzahl von Zeilen
So beheben Sie in R: Fehler bei der Auswahl nicht verwendeter Argumente
So reparieren Sie in R: Der Ersatz hat die Länge Null