Jak naprawić w r: nieprawidłowy poziom współczynnika, wygenerowano na


Komunikat ostrzegawczy, który możesz napotkać podczas korzystania z języka R, to:

 Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = "C"):
  invalid factor level, NA generated

To ostrzeżenie pojawia się, gdy próbujesz dodać wartość do zmiennej czynnikowej w R, która nie istnieje jeszcze jako zdefiniowany poziom.

Poniższy przykład pokazuje, jak w praktyce zareagować na to ostrzeżenie.

Jak odtworzyć ostrzeżenie

Załóżmy, że mamy następującą ramkę danych w R:

 #create data frame
df <- data. frame (team=factor(c('A', 'A', 'B', 'B', 'B')),
                 dots=c(99, 90, 86, 88, 95))

#view data frame
df

  team points
1 to 99
2 to 90
3 B 86
4 B 88
5 B 95

#view structure of data frame
str(df)

'data.frame': 5 obs. of 2 variables:
 $ team: Factor w/ 2 levels "A","B": 1 1 2 2 2
 $ points: num 99 90 86 88 95

Widzimy, że zmienna zespołu jest czynnikiem mającym dwa poziomy: „A” i „B”

Załóżmy teraz, że próbujemy dodać nową linię na końcu ramki danych, używając wartości „C” dla zespołu :

 #add new row to end of data frame
df[nrow(df) + 1,] = c('C', 100)

Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = "C"):
  invalid factor level, NA generated

Otrzymujemy komunikat ostrzegawczy, ponieważ wartość „C” jeszcze nie istnieje jako poziom współczynnika dla zmiennej zespołu .

Należy zauważyć, że jest to tylko komunikat ostrzegawczy i R nadal doda znak nowej linii na końcu ramki danych, ale użyje wartości NA zamiast „C”:

 #view updated data frame
df

  team points
1 to 99
2 to 90
3 B 86
4 B 88
5 B 95
6 NA 100

Jak uniknąć ostrzeżenia

Aby uniknąć ostrzeżenia o nieprawidłowym poziomie współczynnika , musimy najpierw przekonwertować zmienną czynnikową na zmienną znakową, a następnie po dodaniu nowej linii możemy ją ponownie przekonwertować na zmienną czynnikową:

 #convert team variable to character
df$team <- as. character (df$team)

#add new row to end of data frame
df[nrow(df) + 1,] = c('C', 100)

#convert team variable back to factor
df$team <- as. factor (df$team)

#view updated data frame
df

  team points
1 to 99
2 to 90
3 B 86
4 B 88
5 B 95
6 C 100

Zauważ, że udało nam się pomyślnie dodać znak nowej linii na końcu ramki danych i uniknąć komunikatu ostrzegawczego.

Możemy również sprawdzić, czy wartość „C” została dodana jako poziom czynnika do zmiennej zespołu :

 #view structure of updated data frame
str(df)

'data.frame': 6 obs. of 2 variables:
 $ team: Factor w/ 3 levels "A","B","C": 1 1 2 2 2 3
 $points: chr "99" "90" "86" "88" ...

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w R:

Jak naprawić w R: argumenty obejmują różną liczbę linii
Jak naprawić w R: błąd w wyborze nieużywanych argumentów
Jak naprawić w R: wymiana ma zerową długość

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *