3 Menghitung dengan R

3.1 Perintah dan evaluasi

Notasi matematika berkembang untuk tujuan komunikasi antar manusia. Dengan diperkenalkannya komputer yang dapat diprogram pada pertengahan abad ke-20, notasi diperlukan untuk berkomunikasi antara manusia dan perangkat keras. Ternyata notasi matematika tradisional dalam kalkulus tidak sepenuhnya memadai untuk tujuan ini.

Komputer perlu membedakan antara pernyataan deklaratif dan imperatif . Pernyataan deklaratif, seperti g ( z ) z cos ( z ) mendefinisikan dan menggambarkan suatu hubungan. Pernyataan imperatif merupakan arahan untuk melakukan suatu tindakan . Misalnya, “Tokonya ada di blok berikutnya,” bersifat deklaratif. “Bawakan beberapa biskuit dari toko,” sangat penting.

Nama dan format instruksi tersebut—misalnya membuat fungsi matematika dari rumus, menggambar grafik suatu fungsi, memplot data—diberikan dalam notasi fungsi yang sama dengan yang kita gunakan dalam matematika. Misalnya, makeFun()membuat fungsi dari rumus, slice_plot()membuat grafik fungsi, gf_point()membuat satu gaya grafik data. Entitas R yang mengatakan “lakukan ini” juga disebut “fungsi”.

Ketika mengacu pada fungsi R “lakukan ini”, kita akan merujuk pada hal-hal yang berada di antara tanda kurung sebagai “argumen.” Kata “masukan” juga baik-baik saja. Tujuan penggunaan “input” untuk fungsi matematika dan “argumen” untuk fungsi R “lakukan ini” hanyalah untuk membantu Anda mengidentifikasi kapan kita berbicara tentang matematika dan kapan kita berbicara tentang komputasi.

Dengan komputer, penulisan ekspresi dalam notasi komputer berjalan seiring dengan evaluasi notasi. Kita akan mulai dengan mode evaluasi yang paling sederhana, yaitu Anda menulis ekspresi di konsol untuk bahasa tersebut. ?fig-R-console menunjukkan dan contoh tab konsol yang disediakan oleh aplikasi RStudio.

Gambar 3.1: Tab konsol RStudio untuk menulis ekspresi dan mengevaluasinya. Ini >adalah perintah setelah Anda menulis ekspresi Anda, yang ditunjukkan di sini blue . Menekan tombol “kembali” menyebabkan penerjemah bahasa mengevaluasi perintah.

Pada Gambar 3.1 kita sampai pada cerita di tengah-tengah aksi. Untuk memulai, hanya ada karakter prompt.

>

Orang yang memegang keyboard kemudian mengetikkan ekspresi sederhana:2 + 3

>   2 + 3

Setelah menyelesaikan ekspresi, pemain keyboard menekan “return.” Aplikasi RStudio mengirimkan ekspresi ke perangkat lunak yang “menafsirkannya” sesuai dengan aturan bahasa R. 2 + 3adalah ekspresi R yang lengkap dan valid, pernyataan imperatif. Akibatnya, perangkat lunak bahasa R melakukan tindakan yang ditentukan—menambahkan 2 dan 3—dan mengembalikan hasilnya ke RStudio, yang menampilkannya tepat di bawah ekspresi itu sendiri.

>   2 + 3

[ 1 ]   5

Perhatikan bahwa nilai ekspresi hanyalah angka 5. Bahasa R diatur untuk memformat angka dengan indeks, yang berguna ketika nilai ekspresi adalah kumpulan angka yang besar. Dalam kasus di sini, dengan hanya satu angka pada hasil evaluasi ekspresi, indeks hanya menyatakan hal yang sudah jelas.

Setelah mencetak hasil evaluasi ekspresi 2 + 3, RStudio menampilkan prompt lain, yang menandakan bahwa Anda siap untuk memasukkan ekspresi berikutnya. Pada Gambar 3.1 kita melihat konsol setelah orang di keyboard merespons prompt dengan menulis ekspresi lain, menekan return, meminta RStudio mencetak nilai ekspresi itu, dan menampilkan prompt baru.

Dua ekspresi yang ditunjukkan pada konsol pada Gambar 3.1 keduanya bernilai satu angka. Kita mengatakan, “perintah mengembalikan suatu nilai.” Perintahnya adalah ekspresi R yang valid diikuti dengan sinyal (menekan tombol “Kembali”) untuk mengevaluasi perintah . Nilai ekspresi adalah hasil evaluasi perintah.

Bentuk umum lain dari ekspresi R adalah penugasan , sebuah pernyataan deklaratif. Tugas memberi nama pada suatu nilai. Hal ini dilakukan dengan menggunakan nama simbolis dan <-token:

library(mosaicCalc)
## Loading required package: mosaic
## Registered S3 method overwritten by 'mosaic':
##   method                           from   
##   fortify.SpatialPolygonsDataFrame ggplot2
## 
## The 'mosaic' package masks several functions from core packages in order to add 
## additional features.  The original behavior of these functions should not be affected by this.
## 
## Attaching package: 'mosaic'
## The following objects are masked from 'package:dplyr':
## 
##     count, do, tally
## The following object is masked from 'package:Matrix':
## 
##     mean
## The following object is masked from 'package:ggplot2':
## 
##     stat
## The following objects are masked from 'package:stats':
## 
##     binom.test, cor, cor.test, cov, fivenum, IQR, median, prop.test,
##     quantile, sd, t.test, var
## The following objects are masked from 'package:base':
## 
##     max, mean, min, prod, range, sample, sum
## Loading required package: mosaicCore
## 
## Attaching package: 'mosaicCore'
## The following objects are masked from 'package:dplyr':
## 
##     count, tally
## The legacy packages maptools, rgdal, and rgeos, underpinning the sp package,
## which was just loaded, were retired in October 2023.
## Please refer to R-spatial evolution reports for details, especially
## https://r-spatial.org/r/2023/05/15/evolution4.html.
## It may be desirable to make the sf package available;
## package maintainers should consider adding sf to Suggests:.
## 
## Attaching package: 'mosaicCalc'
## The following object is masked from 'package:stats':
## 
##     D
b <- 3

Hasil evaluasi perintah ini akan disimpan di memori komputer, dengan nama b, Karena nilai sedang disimpan, R dirancang untuk tidak menampilkan nilai seperti yang terjadi pada dua perintah pertama di konsol. Jika Anda ingin melihat nilai yang dicetak, berikan nama sebagai perintah penting:

b
## [1] 3
## [1] 3

Seringkali, pernyataan deklaratif dan imperatif digabungkan, misalnya

b <- 22/7

Buku ini menampilkan perintah yang sedang dievaluasi dalam kotak abu-abu, tanpa perintah. Nilai yang dikembalikan oleh perintah ditampilkan di bawah perintah, diawali dengan # # . Dalam pemformatan buku, empat perintah yang baru saja kami jelaskan akan ditampilkan sebagai berikut:

2 + 3
## [1] 5
## [1] 5
sqrt(16)
## [1] 4
## [1] 4
b <- 3
b <- 22/7
b
## [1] 3.142857
## [1] 3.142857

Saat membaca buku ini, berhati-hatilah dalam membedakan antara tampilan suatu perintah dan tampilan nilai yang dikembalikan oleh perintah tersebut. Yang pertama adalah sesuatu yang Anda ketik, yang kedua dicetak oleh komputer.

3.2 Memasang mosaik

Buku ini menggunakan bahasa R yang diperluas dengan serangkaian paket yang dikenal secara kolektif sebagai {mosaic}. Untuk menggunakan perintah di bagian selanjutnya, Anda perlu menginstal paket ini. Ini adalah operasi satu kali; Anda melakukannya satu kali untuk setiap komputer setelah Anda menyiapkan R dan RStudio. Perintah-perintah ini akan melakukan pekerjaan itu. Jalankan ke konsol R Anda.

install.packages("remotes")
remotes::install_github("ProjectMOSAIC/mosaicCalc")

Anda tidak perlu menginstal ulang paket setiap kali Anda memulai konsol R baru. Namun, Anda harus memberi tahu setiap konsol R yang Anda buka untuk merujuk ke paketnya. Lakukan ini dengan perintah berikut, yang biasanya menjadi hal pertama yang Anda ketik saat membuka konsol.

library(mosaicCalc)

3.3 Fungsi dalam R/mosaik

Salah satu operasi matematika mendasar dalam buku ini adalah mendefinisikan fungsi . Anda telah melihat cara kita menggunakan notasi matematika untuk mendefinisikan suatu fungsi, misalnya,

h ( t ) 1.5 t 2 2   .

R/mosaik setara dengan definisi h ( ) adalah:

h <- makeFun(1.5*t^2 - 2 ~ t)

Setelah Anda mendefinisikan suatu fungsi, Anda dapat mengevaluasinya pada sebuah input. Notasi R untuk mengevaluasi fungsi sama dengan notasi matematika, misalnya,

h(4)
## [1] 22
## [1] 22

atau

h(t=4)
## [1] 22
## [1] 22

Namun terdapat perbedaan yang jelas antara notasi matematika dan notasi komputasi yang digunakan untuk mendefinisikan suatu fungsi. Semua informasi yang diberikan sama, tetapi formatnya berbeda. Informasi itu adalah:

Dengan meletakkan kedua bentuk notasi secara berdampingan, mari kita beri label pada elemen yang dimilikinya:

Bagi manusia yang membaca notasi matematika, Anda mengetahui bahwa pernyataan tersebut mendefinisikan suatu fungsi karena Anda telah diberitahu demikian. Demikian pula, komputer perlu diberi tahu apa yang harus dilakukan dengan informasi yang diberikan. Itulah intinya makeFun(). Ada perintah R/mosaik lain yang dapat mengambil informasi yang sama dan melakukan hal lain dengannya, misalnya membuat grafik fungsi atau (bagi mereka yang memiliki beberapa kalkulus) membuat turunan atau antiturunan dari fungsi tersebut.

3.4 Nama dan tugas

Perintah

h <- makeFun(1.5*t^2 - 2 ~ t)

memberi nama hpada fungsi yang dibuat oleh makeFun(). Pilihan nama yang baik membuat perintah Anda lebih mudah bagi pembaca manusia.

Bahasa R memberikan beberapa batasan pada nama yang diperbolehkan. Ingatlah hal ini saat Anda membuat nama R di pekerjaan Anda selanjutnya:

Misalnya, meskipun third_placemerupakan nama yang sah di R, yang berikut ini bukan: 3rd_place, third-place. Namun boleh saja jika memiliki nama seperti place_3rdatau place3, dll., yang diawali dengan huruf.

R juga membedakan huruf besar/kecil. Misalnya, Henryadalah nama yang berbeda dari henry, meskipun keduanya terlihat sama bagi pembaca manusia.

3.5 Rumus di R

Kendala pada keyboard berarti rumus komputer ditulis dengan cara yang sedikit berbeda dari notasi matematika tradisional. Hal ini paling jelas terlihat saat menulis perkalian dan eksponensial. Perkalian harus selalu ditandai dengan simbol, misalnya 3 π tertulis 3pi. Untuk eksponensial, daripada menggunakan superskrip seperti 2 3 Anda menggunakan karakter “tanda sisipan”, seperti pada 2^3. Cara terbaik untuk belajar menerapkan rumus matematika dalam bahasa komputer adalah dengan membaca contoh dan berlatih menulisnya.

Berikut beberapa contohnya:

Notasi tradisional______________________Notasi R

3 + 2 ________________________________3 + 2

3 ÷ 2 ________________________________3 / 2

6 × 4 ________________________________6 * 4

4 __________________________________sqrt(4)

ln 5 __________________________________log(5)

2 π ___________________________________2 * pi

1 2 17 _________________________________(1 / 2) * 17

17 5 ÷ 2 ___________________________17 - 5 / 2

17 5 2 ________________________________(17 - 5) / 2

3 2 __________________________________3^2

e 2 _________________________________exp(-2)

Masing-masing contoh ini ditulis menggunakan angka sebagai masukan untuk operasi matematika. Sintaksnya akan sama ketika menggunakan nama input seperti xatau yatau altitude, misalnya (x - y) / 2. Agar perintah tersebut dapat digunakan xdan yberfungsi, beberapa makna harus telah melekat sebelumnya pada simbol-simbol tersebut. Kami akan kembali ke topik penting ini di lain hari.