Katakanlah kita memiliki pernyataan yang menghasilkan integer(0)
, misalnya
a <- which(1:3 == 5)
Apa cara teraman untuk menangkap ini?
r
error-handling
integer
try-catch
Roman Luštrik
sumber
sumber
any
. Ini akan mengembalikan FALSE untuk salah satuwhich(1:3==5)
atau untuk1:3==5
.integer(0)
, yang saya hasilkan menggunakanwhich
contoh.which
? Ini akan sangat membantu saya untuk menghindari kode yang buruk.Jawaban:
Itu adalah cara R untuk mencetak vektor panjang nol (bilangan bulat), sehingga Anda bisa menguji
a
panjangnya 0:Mungkin ada baiknya memikirkan kembali strategi yang Anda gunakan untuk mengidentifikasi elemen mana yang Anda inginkan, tetapi tanpa rincian spesifik lebih lanjut, sulit untuk menyarankan strategi alternatif.
sumber
Jika khusus bilangan bulat nol panjang , maka Anda ingin sesuatu seperti
Periksa dengan:
Anda juga dapat menggunakannya
assertive
untuk ini.sumber
!length(x)
daripadalength(x)==0
length(x) == 0L
membaca lebih jelas kepada saya.L
akhiran ke angka membuat R menyimpannya sebagai bilangan bulat dan bukan nilai floating point. Lihat, misalnya, cran.r-project.org/doc/manuals/R-lang.html#ConstantsMungkin di luar topik, tetapi R menampilkan dua fungsi yang bagus, cepat, dan tanpa sadar untuk mengurangi vektor logis -
any
danall
:sumber
is.empty
, karena beberapa fungsi kembali,integer(0)
bukanNA
atauNULL
. Tetapi untuk saat ini jalan Anda adalah yang paling mudah, dan bekerja dengan bijaksana yang merupakan keunggulan besarlength(a)
.Terinspirasi oleh jawaban Andrie, Anda bisa menggunakan
identical
dan menghindari masalah atribut dengan menggunakan fakta bahwa itu adalah himpunan kosong dari kelas objek tersebut dan menggabungkannya dengan elemen kelas itu:Atau lebih umum:
sumber
Setelah dipikir-pikir saya pikir ada yang lebih indah dari
length(.)
:sumber