Cara memperbaikinya di r: argumen bukan numerik atau logis: return na


Peringatan yang mungkin Anda temui di R adalah:

 Warning message:
In mean.default(df): argument is not numeric or logical: returning NA

Peringatan ini terjadi ketika mencoba menghitung rata-rata suatu objek di R yang bukan numerik atau logis.

Tutorial ini menjelaskan dengan tepat bagaimana menangani peringatan ini dalam praktiknya.

Cara mereproduksi peringatan tersebut

Misalkan kita membuat bingkai data berikut di R:

 #create data frame
df <- data. frame (team=c('A', 'B', 'C', 'D', 'E'),
                 points=c(99, 90, 86, 88, 95),
                 assists=c(33, 28, 31, 39, 34),
                 rebounds=c(30, 28, 24, 24, 28))

#view data frame
df

  team points assists rebounds
1 A 99 33 30
2 B 90 28 28
3 C 86 31 24
4 D 88 39 24
5 E 95 34 28

Jika kita mencoba menghitung rata-rata kolom karakter atau jika kita mencoba menghitung rata-rata seluruh bingkai data, kita akan menerima peringatan:

 #attempt to calculate mean of character column
mean(df$team)

Warning message:
In mean.default(df$team): argument is not numeric or logical: returning NA

#attempt to calculate mean of entire data frame
mean(df)

Warning message:
In mean.default(df): argument is not numeric or logical: returning NA

Fungsi Mean() hanya menggunakan vektor numerik sebagai argumen, itulah sebabnya kami mendapat peringatan di kedua skenario.

Bagaimana menangani peringatan tersebut

Cara menangani peringatan ini adalah dengan hanya menggunakan fungsi Mean() dengan vektor numerik.

Misalnya, kita dapat menghitung rata-rata kolom poin karena bersifat numerik:

 #calculate mean of points column
mean(df$points)

[1] 91.6

Atau kita bisa menggunakan fungsi sapply() untuk menghitung rata-rata setiap kolom dalam bingkai data:

 #calculate mean of every column in data frame
sapply(df, mean, 2)

    team points assists rebounds 
      NA 90 33 28 

Warning message:
In mean.default(X[[i]], ...):
  argument is not numeric or logical: returning NA

Kami dapat menghitung rata-rata setiap kolom numerik, namun masih menerima pesan peringatan karena kami mencoba menghitung rata-rata kolom karakter “tim”.

Untuk menghindari peringatan ini sepenuhnya, kita dapat menggunakan fungsi sapply() hanya dengan tiga kolom numerik:

 #calculate mean of each numeric column
sapply(df[c(' points ', ' assists ', ' rebounds ')], mean, 2)
  points assists rebounds 
      90 33 28

Perhatikan bahwa rata-rata setiap kolom numerik berhasil ditampilkan dan kami tidak menerima pesan peringatan apa pun.

Sumber daya tambahan

Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya di R:

Cara memperbaikinya: kondisi memiliki panjang > 1 dan hanya elemen pertama yang akan digunakan
Cara memperbaiki: argumen non-numerik dari operator biner
Cara memperbaikinya: dim(X) harus mempunyai panjang positif
Cara memperbaiki: kesalahan dalam memilih argumen yang tidak digunakan

Tambahkan komentar

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