Saya biasanya lebih suka kode R sehingga saya tidak mendapatkan peringatan, tetapi saya tidak tahu bagaimana menghindari peringatan saat menggunakan as.numeric
untuk mengonversi vektor karakter.
Sebagai contoh:
x <- as.numeric(c("1", "2", "X"))
Akan memberi saya peringatan karena memperkenalkan NAs dengan paksaan. Saya ingin NAs diperkenalkan dengan paksaan - apakah ada cara untuk mengatakannya "ya ini yang ingin saya lakukan". Atau haruskah saya hidup dengan peringatan itu?
Atau haruskah saya menggunakan fungsi yang berbeda untuk tugas ini?
?suppressWarnings
mungkin?suppressWarnings
tampak sempurna.read.table
menerima argumenna.strings
?Jawaban:
Penggunaan
suppressWarnings()
:Ini menekan peringatan.
sumber
suppressWarnings()
telah disebutkan. Alternatifnya adalah mengonversi karakter bermasalah ke NA terlebih dahulu secara manual. Untuk masalah khusus Anda,taRifx::destring
lakukan hanya itu. Dengan cara ini jika Anda mendapatkan peringatan lain yang tidak terduga dari fungsi Anda, itu tidak akan dimatikan.sumber
destring
berfungsi dengan sempurna untuk contoh op, tetapi satu peringatan bagi siapa pun yang melihat utas ini di masa depan adalah yangdestring
bekerja secara berbeda darias.numeric
ketika string target adalah campuran string dan numerik: yaitu,destring("x1")
memberi1
tetapias.numeric("x1")
memberiNA
Secara umum, menekan peringatan bukanlah solusi terbaik karena Anda mungkin ingin diperingatkan ketika beberapa masukan yang tidak diharapkan akan diberikan.
Solusi di bawah ini adalah pembungkus untuk mempertahankan hanya NA selama konversi tipe data. Tidak memerlukan paket apa pun.
sumber
suppressWarnings()
umumnya merupakan ide yang buruk, karena terkadang kita perlu melihat peringatan tersebut.Saya telah sedikit memodifikasi fungsi jangorecki untuk kasus di mana kita mungkin memiliki berbagai nilai yang tidak dapat diubah menjadi angka. Dalam fungsi saya, pencarian template dilakukan dan jika template tidak ditemukan, FALSE dikembalikan.! sebelum gperl, itu berarti kita membutuhkan elemen vektor yang tidak cocok dengan template. Selebihnya mirip
as.num
fungsinya. Contoh:sumber