Lewati ke konten utama

Cara Memperbaiki Error Non-Numeric Argument to Binary Operator di R

Error non-numeric argument to binary operator di R terjadi saat Anda mencoba melakukan aritmetika pada data non-numerik, seperti string karakter atau faktor.
· 8 mnt Baca

Jelajahi bersama AI

Anda mungkin pernah menemui error ini saat pemrograman di R: Error: non-numeric argument to binary operator. Ini dapat terjadi ketika melakukan operasi matematika pada data yang berisi nilai non-numerik, seperti string atau karakter.

Dalam tutorial ini, saya akan memandu Anda cara mengatasi dan memperbaiki error ini. Pertama saya akan memberikan jawaban singkat lalu membahas lebih dalam agar Anda lebih memahami mengapa error ini muncul.

Jawaban Singkat: Cara Memperbaiki Error Non-Numeric Argument to Binary Operator di R

Bagi Anda yang terburu-buru, memperbaiki error non-numeric argument to binary operator di R melibatkan konversi data ke tipe numerik sebelum melakukan operasi aritmetika. Metode ini memastikan semua elemen dalam data Anda sesuai untuk perhitungan matematis.

Pada contoh berikut, fungsi as.numeric() secara langsung mengonversi vektor characters menjadi numerik, sehingga operasi penjumlahan dilakukan tanpa error.

characters <- c("5", "10", "15")

characters <- as.numeric(characters)

result <- characters + 10

print(result)

Mengapa Error Terjadi

Di R, operasi aritmetika dirancang untuk bekerja dengan tipe data numerik. Ketika Anda menemui error non-numeric argument to binary operator, ini biasanya menandakan penyalahgunaan operator aritmetika pada tipe data non-numerik, seperti string atau faktor. Untuk mempelajari lebih lanjut tentang tipe data R, baca tutorial Data Types in R kami.

Ini dapat terjadi pada beberapa skenario umum:

  • Operasi pada String Karakter: Error dapat terjadi saat mencoba melakukan aritmetika pada data teks.
  • Operasi pada Tipe Data Faktor: Error terjadi ketika R mengonversi string menjadi faktor di dalam data frame, terutama saat mengimpor data, sehingga menghasilkan tipe non-numerik yang tidak diinginkan.
  • Operasi pada List atau Struktur Kompleks Lainnya: Error juga terjadi saat menggunakan operator aritmetika pada list atau struktur serupa yang tidak cocok untuk operasi tersebut.

Cara Mereproduksi dan Memperbaiki Error

Mari kita buat dataset sederhana dan melakukan operasi yang dengan sengaja akan memicu error ini untuk mengilustrasikan bagaimana hal itu bisa terjadi. Lalu kita perbaiki error pada tiap kasus.

Cara mereproduksi dan memperbaiki error untuk string karakter

Pada contoh pertama, kita melihat pesan error ini karena elemen-elemen vektor characters bukan bertipe numerik melainkan string karakter.

characters <- c("5", "10", "15")

result <- characters + 10

print(result)

Untuk memperbaikinya, kita konversi ke numerik menggunakan as.numeric():

characters <- c("5", "10", "15")

characters <- as.numeric(characters)

result <- characters + 10

print(result)

Cara mereproduksi dan memperbaiki error untuk faktor

Pada contoh berikutnya, kita akan mereproduksi error untuk faktor.

factors <- factor(c("5", "10", "15"))

result <- factors + 10

print(result)

Untuk memperbaikinya, kita konversi ke numerik dengan terlebih dahulu mengonversi ke karakter. Kita lakukan ini karena, di R, faktor disimpan sebagai vektor integer dengan sekumpulan level karakter yang bersesuaian.

Ketika Anda langsung mengonversi faktor ke numerik menggunakan as.numeric(), R mengembalikan kode integer yang mendasari, yaitu representasi integer internal dari level faktor, alih-alih nilai karakter yang sebenarnya. Mengonversi faktor ke karakter terlebih dahulu akan mengambil level aktual sebagai string karakter, yang kemudian dapat dikonversi dengan benar ke nilai numerik.

factors <- factor(c("5", "10", "15"))

factors <- as.numeric(as.character(factors))

result <- factors + 10

print(result)

Cara mereproduksi dan memperbaiki error untuk list

Pada contoh berikutnya, kita akan mereproduksi error untuk list. 

list_data <- list("5", "10", "15")

result <- list_data + 10

print(result)

Untuk memperbaikinya, kita ekstrak dan konversi elemen menjadi numerik. Fungsi unlist() mengonversi list menjadi vektor. 

list_data <- list("5", "10", "15")

list_data <- as.numeric(unlist(list_data))

result <- list_data + 10

print(result)

Cara mereproduksi dan memperbaiki error untuk tipe data campuran

Contoh berikut sedikit lebih rumit. Teknik-teknik sebelumnya tidak akan berhasil dalam kasus ini karena kita akan menemui "20a" yang tidak dapat dikonversi menjadi nilai numerik. 

Fungsi sapply() menawarkan solusi yang baik dalam kasus ini. Fungsi ini menerapkan fungsi tertentu pada setiap elemen vektor kita. Dalam kasus kita, kita mendefinisikan fungsi yang mencoba mengonversi setiap elemen menjadi nilai numerik.

mixed_data <- list("5", 10, "15", "20a")

numeric_data <- sapply(mixed_data, function(x) {
  if (is.numeric(x)) {
    return(x)
  } else if (!is.na(as.numeric(x))) {
    return(as.numeric(x))
  } else {
    return(NA)
  }
})

result <- numeric_data + 10

print(result)

Untuk informasi lebih lanjut tentang pemrograman fungsional di R, lihat kursus Intermediate Functional Programming with purrr. Untuk mempelajari lebih lanjut keluarga fungsi apply(), baca Tutorial on the R Apply Family kami. 

Hal Tambahan yang Perlu Diketahui

Debugging dengan traceback

Saat error terjadi, traceback() dapat menjadi alat yang berharga untuk debugging. Fungsi ini menyediakan urutan pemanggilan yang mengarah ke error, membantu Anda mengidentifikasi titik kegagalan secara tepat.

traceback()

Setelah menjalankan perintah ini, R akan mencetak urutan pemanggilan fungsi yang mengarah ke error. Ini dapat memberikan wawasan tentang di mana data non-numerik mungkin diperkenalkan.

Tinjau metode input data

Anda juga sebaiknya memeriksa kembali cara data diimpor dan memastikan data dikonversi dengan benar. Saat mengimpor data, khususnya dari file CSV, R dapat secara otomatis mengonversi data karakter menjadi faktor. Penting untuk mengendalikan perilaku ini agar data Anda diimpor dengan benar.

# Misalkan data dibaca dari CSV dan keliru diimpor sebagai faktor
data <- read.csv("data.csv", stringsAsFactors = TRUE)

data$column <- as.numeric(as.character(data$column))

Pada contoh ini, data diimpor dari file CSV dengan stringsAsFactors disetel ke TRUE. Lalu kita mengonversi kolom faktor menjadi karakter dan selanjutnya menjadi numerik untuk memastikan tipe data yang benar bagi operasi aritmetika.

Cara Mencegah Error

Menggunakan pengecekan kondisional

Untuk membantu mencegah error ini terjadi, coba terapkan pengecekan kondisional untuk memastikan tipe data cocok untuk operasi yang akan dilakukan. Memeriksa tipe data dan menangani konversi yang diperlukan secara kondisional adalah praktik yang baik sebelum melakukan operasi.

Pada contoh berikut, kita memeriksa apakah data bersifat numerik. Jika tidak, kita mengonversinya menjadi numerik sebelum melanjutkan operasi aritmetika. Ini menangkap tipe data yang salah dan mengonversinya menjadi numerik sesuai kebutuhan. 

data <- "20"

if(is.numeric(data)) {
  result <- data + 10
} else {
  data <- as.numeric(data)
  result <- data + 10
}

print(result)

contoh pengecekan kondisional

Kesimpulan dan Sumber Tambahan

Semoga artikel ini membantu Anda menyelesaikan masalah. Error seperti non-numeric argument to binary operator umum terjadi dalam pemrograman, dan mengetahui cara menanganinya itu penting. Memahami tipe data dan konversi yang tepat dapat membantu mencegah error ini terjadi.

Untuk membantu Anda dengan R, Anda dapat melihat lembar contekan R kami atau kursus gratis Introduction to R, atau untuk pemahaman yang lebih mendalam, coba R Programming Skill Track kami.

Austin Chia

Penulis

Austin Chia

Saya Austin, seorang blogger dan penulis teknologi dengan pengalaman bertahun-tahun sebagai data scientist dan analis data di bidang kesehatan. Memulai perjalanan teknologi dengan latar belakang biologi, kini saya membantu orang lain melakukan transisi yang sama melalui blog teknologi saya. Ketertarikan saya pada teknologi mendorong kontribusi tulisan saya untuk puluhan perusahaan SaaS, menginspirasi orang lain dan membagikan pengalaman saya.

Pertanyaan yang Sering Diajukan

Apa itu argumen non-numerik?

Argumen non-numerik adalah nilai atau variabel yang tidak dapat ditafsirkan sebagai angka dalam bahasa pemrograman seperti R.

Bagaimana cara mengenali error ini dalam kode saya?

Pesan error biasanya memuat frasa "non-numeric argument", sehingga mudah dikenali.

Apakah error ini hanya terjadi di R?

Tidak, error ini juga dapat terjadi di bahasa pemrograman lain. Namun, pesan errornya mungkin muncul dengan cara yang berbeda.

Apakah ada cara untuk benar-benar menghindari error ini?

Ya, dengan memastikan bahwa semua nilai dan variabel dalam kode Anda kompatibel dengan operator spesifik yang digunakan.

Bisakah saya menggunakan tipe operator apa pun dengan argumen non-numerik?

Tidak, beberapa operator hanya dapat digunakan dengan nilai numerik dan akan menghasilkan error ini jika diberikan argumen non-numerik.

Topik

Terkait

blogs

Tutorial Korelasi di R

blogs

Spaghetti Plot dan Jalur Badai