Cara memperbaikinya di r: nilai yang hilang tidak diperbolehkan dalam tugas yang dilanggankan


Pesan kesalahan yang mungkin Anda temui saat menggunakan R adalah:

 Error in `[<-.data.frame`(`*tmp*`, df$A == 5, , value = list(A = c(NA, : 
  missing values are not allowed in subscripted assignments of data frames

Kesalahan ini biasanya terjadi ketika Anda mencoba menetapkan nilai dalam satu kolom menggunakan nilai dari kolom lain, tetapi nilai NA tetap ada.

Contoh berikut menunjukkan cara mengatasi kesalahan ini dalam praktiknya.

Bagaimana cara mereproduksi kesalahan tersebut

Misalkan kita membuat bingkai data berikut di 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

Sekarang misalkan kita mencoba memberikan nilai 10 pada setiap baris di kolom B dimana nilai yang sesuai di kolom A adalah 5:

 #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

Kami menerima kesalahan karena ada nilai NA di kolom A dan pesan kesalahan secara eksplisit memberi tahu kami bahwa nilai yang hilang tidak diperbolehkan dalam penetapan subskrip bingkai data .

Bagaimana menghindari kesalahan tersebut

Ada dua cara untuk menghindari kesalahan ini.

1. Gunakan operator %dalam%.

Salah satu cara untuk menghindari kesalahan ini adalah dengan menggunakan operator %in% saat melakukan tugas:

 #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

Perhatikan bahwa nilai 10 telah ditetapkan ke setiap baris di kolom B dimana nilai terkait di kolom A adalah 5 dan kami tidak menerima kesalahan.

2. Gunakan is.na()

Cara lain untuk menghindari kesalahan ini adalah dengan menggunakan fungsi is.na() saat menjalankan tugas:

 #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

Sekali lagi, kita dapat memberikan nilai 10 untuk setiap baris di kolom B dimana nilai yang sesuai di kolom A adalah 5 dan kita tidak menerima kesalahan.

Sumber daya tambahan

Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya di R:

Cara memperbaikinya di R: argumen melibatkan jumlah baris yang berbeda
Cara memperbaiki kesalahan R: dalam memilih argumen yang tidak digunakan
Cara memperbaiki di R: penggantian memiliki panjang nol

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *