Operator ekstrak R: [vs $ [duplikat]
Ada banyak postingan di internet mengenai perbedaan dan persamaan tentang [dan $. Saya melihat beberapa posting di mana $direkomendasikan hanya untuk penggunaan interaktif tetapi tidak untuk pemrograman. Namun, saya tidak yakin saya mengerti apakah ini adalah preferensi atau ada penjelasan di balik gagasan ini.
Sekarang katakanlah saya sedang menulis paket atau fungsi, jika saya mengekstrak elemen dengan nama (misalnya, mtcars[["mpg"]]) mengapa saya harus menghindari penggunaan mtcars$mpg?
Jawaban
Ada dua perbedaan yang sangat penting antara [[dan $:
[[- bekerja dengan string (yaitu mendukung substitusi variabel),$tidak. Jika Anda memilikimy_var = "mpg", Anda dapat menggunakanmtcars[[my_var]], tapi tidak ada cara yang baik untuk digunakanmy_vardengan$.$pelengkapan otomatis, jika nama kolom sebagian tidak ambigu.mtcars$makan mengembalikanmpgkolom,mtcars[["m"]]akan kembaliNULL.mtcars$dakan kembaliNULLkarena beberapa kolom dimulai dengan "d".
# 1 membuat [[lebih fleksibel untuk pemrograman - sangat umum dalam penggunaan terprogram untuk bekerja dengan nama kolom yang disimpan sebagai string.
# 2 membuat $lebih berbahaya - Anda tidak boleh menggunakan nama kolom yang disingkat dalam pemrograman, namun dalam penggunaan interaktif itu bisa bagus dan cepat. (Meskipun ini sebagian besar diperdebatkan dengan fitur penyelesaian otomatis RStudio, jika Anda menggunakan IDE itu.)
$melakukan pencocokan parsial: jika Anda memiliki kolom bernama xxxdalam dataframe dat, maka dat$xxakan mengembalikan xxxkolom tersebut (kecuali jika Anda juga memiliki xxkolom). Ini bisa berbahaya.
Saya selalu menggunakan [["..."]]untuk alasan lain: Saya menggunakan RStudio, dan ada penyorotan yang bagus untuk string, sedangkan tidak ada penyorotan dengan $.