Tipe Data di R dengan Contoh

⚡ Ringkasan Cerdas

Tipe data di R mendefinisikan bagaimana nilai disimpan dalam memori, dan operator menentukan apa yang dapat dilakukan R dengan nilai tersebut. Vektor, variabel, aritmatika, relasional, logis, dan operator penugasan dibahas di sini dengan contoh yang dapat dijalankan.

  • 🔘 AtomJenis IC: R menyimpan setiap nilai sebagai tipe data logis, integer, double, complex, character, atau raw.
  • ☑️ Pemeriksaan tipe: class(), typeof() dan mode() mendeskripsikan suatu nilai dari tiga sudut pandang yang berbeda.
  • Vektor: Fungsi c() membangun koleksi satu dimensi di mana setiap elemen memiliki satu tipe yang sama.
  • 🧪 Operatorsi: Operator aritmatika, relasional, logis, dan penugasan mencakup hampir setiap ekspresi dasar R.
  • Pengambilan subset: Tanda kurung siku yang dikombinasikan dengan elemen vektor filter kondisi logis dalam satu baris.
  • ⚠️ Catatan versi: R 4.3.0 mengubah argumen dengan panjang lebih dari satu pada operator && atau || menjadi sebuah kesalahan.

Tipe Data dalam R

Apa Tipe Data di R?

Berikut ini adalah Tipe Data atau Struktur Data dalam Pemrograman R:

Daftar itu mencampurkan dua ide yang terkait, dan memisahkannya akan mempermudah pemahaman bagian selanjutnya dari halaman ini. A tipe data menjelaskan apa itu nilai tunggal — sebuah angka, sepotong teks, sebuah BENAR atau SALAH. A struktur data Menjelaskan berapa banyak nilai yang disatukan dan dalam bentuk apa. Skalar, vektor, matriks, data frame, dan list adalah struktur; nilai-nilai di dalamnya masih termasuk dalam salah satu tipe dasar R.

Structure Ukuran Tipe campuran diperbolehkan? Penggunaan khas
Skalar Vektor panjang-1 Tidak Satu ukuran atau indikator tunggal
vektor 1 Tidak Kolom bacaan dari satu jenis
Matriks 2 Tidak Kisi-kisi numerik dan aljabar linear
Kerangka data 2 Ya, satu jenis per kolom. Kumpulan data tabular
Daftar 1, tetapi dapat disarang Ya, apa pun per elemen. Hasil model dan kontainer campuran

R tidak memiliki tipe skalar terpisah: skalar hanyalah vektor dengan panjang satu, itulah sebabnya banyak kode R ditulis untuk seluruh vektor sekaligus.

Tipe Data Dasar di R

Setiap nilai dalam R termasuk dalam salah satu dari sejumlah kecil tipe dasar (atomik):

  • 4.5 adalah nilai desimal yang disebut numerik.
  • Angka 4 terlihat seperti bilangan bulat, tetapi R tetap menyimpannya sebagai tipe data double. Tulis 4L jika bilangan bulat sebenarnya yang dibutuhkan.
  • TRUE atau FALSE adalah nilai Boolean, yang disebut logical dalam R.
  • Nilai di dalam ” ” atau ' ' adalah teks (sebuah string). Nilai-nilai tersebut disebut karakter.

Dua tipe tambahan melengkapi himpunan tersebut. Nilai kompleks seperti 3+2i menyimpan bagian riil dan imajiner, dan nilai mentah menyimpan byte. Keduanya jarang muncul dalam analisis sehari-hari, tetapi tercantum dalam basis R. dokumentasi typeof() di samping empat jenis umum lainnya.

Tipe Contoh nilai kelas() mengembalikan typeof() mengembalikan
logis BENAR logis logis
Bilangan bulat 4L bilangan bulat bilangan bulat
Double (numerik) 4.5 numerik dua kali lipat
Karakter "R itu Fantastis" karakter karakter
Kompleks 3+2i kompleks kompleks
Mentah as.raw(10) mentah mentah

Kita dapat memeriksa tipe suatu variabel dengan menggunakan fungsi kelas.

Contoh 1: Memeriksa Variabel Numerik

# Declare variables of different types
# Numeric
x <- 28
class(x)

Keluaran:

## [1] "numeric"

Contoh 2: Memeriksa Variabel Karakter

# String
y <- "R is Fantastic"
class(y)

Keluaran:

## [1] "character"

Contoh 3: Memeriksa Variabel Logika

# Boolean
z <- TRUE
class(z)

Keluaran:

## [1] "logical"

Perhatikan bahwa class() menjawab "numeric" untuk 28 meskipun 28 tidak memiliki bagian desimal. R menyimpannya sebagai double, dan hanya typeof() yang mengungkapkannya. Perbedaan selanjutnya yang perlu dipelajari adalah bagaimana nilai-nilai tersebut diberi nama.

Variabel dalam R

Variabel adalah salah satu blok bangunan dasar di R yang menyimpan nilai, dan sangat penting bagi siapa pun yang melakukan pekerjaan ilmu data. Sebuah variabel di R dapat menyimpan angka, objek, hasil statistik, vektor, kumpulan data, atau prediksi model — pada dasarnya apa pun yang dihasilkan R. Kita dapat menggunakan variabel tersebut nanti hanya dengan memanggil nama variabel tersebut.

Untuk mendeklarasikan variabel di R, kita perlu memberikan nama variabel. Nama tersebut tidak boleh mengandung spasi. Kita dapat menggunakan _ untuk menggabungkan dua kata.

Nama variabel dapat berisi huruf, angka, titik, dan garis bawah, tetapi harus diawali dengan huruf atau titik, dan kata-kata yang dicadangkan seperti TRUE, FALSE, dan NULL tidak dapat digunakan sebagai nama. Untuk menambahkan nilai ke variabel, gunakan <- atau =.

Berikut sintaksnya:

# First way to declare a variable:  use the `<-`
name_of_variable <- value
# Second way to declare a variable:  use the `=`
name_of_variable = value

Pada baris perintah, kita dapat menulis kode berikut untuk melihat apa yang terjadi:

Contoh 1: Menetapkan Nilai dan Mencetaknya

# Print variable x
x <- 42
x

Keluaran:

## [1] 42

Contoh 2: Mendeklarasikan Variabel Kedua

y  <- 10
y

Keluaran:

## [1] 10

Contoh 3: Menggunakan Dua Variabel dalam Satu Ekspresi

# We call x and y and apply a subtraction
x-y

Keluaran:

## [1] 32

Variabel yang menyimpan beberapa nilai dengan tipe yang sama disebut vektor, yang merupakan struktur yang diharapkan oleh hampir semua fungsi R.

Vektor di R

Vektor adalah koleksi satu dimensi di mana setiap elemen memiliki tipe yang sama. Kita dapat membuat vektor dengan semua tipe data dasar R yang telah dipelajari sebelumnya. Cara paling sederhana untuk membuat vektor di R adalah dengan menggunakan fungsi c().

Contoh 1: Membuat Vektor Numerik

# Numerical
vec_num <- c(1, 10, 49)
vec_num

Keluaran:

## [1]  1 10 49

Contoh 2: Membuat Vektor Karakter

# Character 
vec_chr <- c("a", "b", "c")
vec_chr

Keluaran:

## [1] "a" "b" "c"

Contoh 3: Membuat Vektor Logika

# Boolean 
vec_bool <-  c(TRUE, FALSE, TRUE)
vec_bool

Keluaran:

##[1] TRUE FALSE TRUE

Jika c() menerima campuran tipe data, fungsi tersebut tidak akan gagal. Fungsi tersebut secara diam-diam akan mengubah setiap elemen menjadi tipe data yang paling umum, sehingga c(1, "a", TRUE) menjadi vektor karakter. Kita juga dapat melakukan perhitungan aritmatika pada vektor di R.

Contoh 4: Menjumlahkan Dua Vektor Elemen demi Elemen

# Create the vectors
vect_1 <- c(1, 3, 5)
vect_2 <- c(2, 4, 6)
# Take the sum of A_vector and B_vector
sum_vect <- vect_1 + vect_2
# Print out total_vector
sum_vect

Keluaran:

[1]  3  7 11

Penambahan tersebut dilakukan elemen demi elemen karena kedua vektor memiliki panjang yang sama. Ketika panjangnya berbeda, R akan menggunakan kembali vektor yang lebih pendek, mengulanginya hingga sama dengan vektor yang lebih panjang, dan hanya akan memberikan peringatan jika panjang vektor yang lebih panjang bukan kelipatan dari vektor yang lebih pendek.

Contoh 5: Iris Lima Elemen Pertama

Di R, dimungkinkan untuk memotong vektor. Pada beberapa kesempatan, kita hanya tertarik pada lima elemen pertama dari sebuah vektor. Kita dapat menggunakan perintah [1:5] untuk mengekstraknya.tracnilai 1 sampai 5.

# Slice the first five rows of the vector
slice_vector <- c(1,2,3,4,5,6,7,8,9,10)
slice_vector[1:5]

Keluaran:

## [1] 1 2 3 4 5

Contoh 6: Membangun Rentang dengan Tanda Titik Dua Operator

Cara tercepat untuk membuat rentang nilai adalah dengan menggunakan operator titik dua (:) di antara dua angka. Misalnya, dari contoh di atas, kita dapat menulis c(1:10) untuk membuat vektor nilai dari satu hingga sepuluh.

# Faster way to create adjacent values
c(1:10)

Keluaran:

## [1]  1  2  3  4  5  6  7  8  9 10

Karena vektor secara diam-diam mengubah tipenya ketika dicampur, ada baiknya mengetahui cara memeriksa dan mengkonversi tipe sesuai kebutuhan.

Cara Memeriksa dan Mengonversi Tipe Data di R

Tiga kelompok fungsi menjawab tiga pertanyaan yang selalu muncul: apa ini, apakah ini tipe tertentu, dan apakah ini bisa menjadi tipe lain.

Keluarga fungsi Pertanyaan itu menjawab contoh
kelas(), tipe(), mode() Nilai ini bertipe apa? kelas(28), tipe(28), mode(28)
adalah.*() Apakah nilai ini bertipe X? adalah numerik(), adalah karakter(), adalah logika()
sebagai.*() Bisakah nilai ini menjadi tipe X? as.numeric(), as.character(), as.integer()
str() Seperti apa bentuk objek ini secara keseluruhan? str(vec_num)
# Three different views of the same value
x <- 28
class(x)      # "numeric"  -- the class used for method dispatch
typeof(x)     # "double"   -- how R stores the value internally
mode(x)       # "numeric"  -- the older S-style mode

# Ask a yes/no question about a type
is.numeric(x)     # TRUE
is.character(x)   # FALSE

# Convert between types
as.character(x)   # "28"
as.integer("28")  # 28 stored as an integer
as.numeric("abc") # NA, with a coercion warning

Dua aturan menjelaskan sebagian besar kejutan di sini. Pertama, `class()` melaporkan kelas yang digunakan untuk pengiriman metode sementara `typeof()` melaporkan penyimpanan internal, itulah sebabnya 28 adalah "numerik" untuk satu dan "double" untuk yang lain. Kedua, konversi yang tidak dapat berhasil tidak menghentikan skrip: `as.numeric("abc")` mengembalikan `NA` dan mencetak peringatan konversi, jadi `NA` yang tidak ditampilkan setelah impor hampir selalu merupakan masalah tipe. Logika yang sama juga berlaku. faktor, yang menyimpan kategori sebagai kode bilangan bulat ditambah tabel level.

Setelah jenis-jenisnya ditentukan, langkah selanjutnya adalah operator yang menjalankannya.

R Aritmatika Operatorso

Pertama-tama kita akan melihat operator aritmatika dasar di R. Berikut adalah operator aritmatika dalam pemrograman R dan artinya:

Operator Deskripsi
+ Tambahan
- Subtracproduksi
* Perkalian
/ Divisi
^ atau ** Eksponensiasi
%% Modulo (sisa setelah pembagian)
%/% Pembagian bilangan bulat (hasil bagi, sisa diabaikan)

Setiap operator ini di-vektorisasi, sehingga ekspresi yang sama dapat bekerja pada satu nilai atau pada seluruh kolom.

Contoh 1: Penjumlahan

# An addition
3 + 4

Keluaran:

## [1] 7

Anda dapat dengan mudah menyalin dan menempelkan kode R di atas ke dalam RStudio Konsol. Pada artikel ini, output ditampilkan pada baris yang diawali dengan ##. Misalnya, jika kita menulis kode print("Guru99") konsol mencetak [1] "Guru99", yang akan ditampilkan halaman ini sebagai ## [1] "Guru99 ".

Tanda ## menandai baris keluaran yang dicetak, dan angka di dalam tanda kurung siku ([1]) adalah indeks nilai pertama pada baris tersebut, bukan bagian dari hasilnya.

Kalimat yang diawali dengan # adalah komentar. Kita dapat menggunakan # di dalam skrip R untuk menambahkan catatan apa pun yang kita inginkan, dan R akan mengabaikannya saat dijalankan.

Contoh 2: Perkalian

# A multiplication
3*5

Keluaran:

## [1] 15

Contoh 3: Pembagian

# A division
(5+5)/2

Keluaran:

## [1] 5

Contoh 4: Eksponensiasi

# Exponentiation
2^5

Keluaran:

## [1] 32

Contoh 5: Modulo

# Modulo
28%%6

Keluaran:

## [1] 4

Operasi aritmatika menghasilkan angka. Kelompok operator berikutnya menghasilkan TRUE dan FALSE sebagai gantinya.

R Relasional (Perbandingan) Operatorso

Operator relasional membandingkan dua nilai dan mengembalikan hasil logis. Operator ini membangun kondisi yang digunakan untuk penyaringan, dan divetorisasi dengan cara yang sama persis seperti operator aritmatika.

Operator Deskripsi
> Lebih besar dari
< Less dari
>= Lebih dari atau sama dengan
<= Less dari atau sama dengan
== Sama persis dengan
!= Tidak sebanding dengan
a <- 10
b <- 3

a > b     # TRUE
a < b     # FALSE
a >= 10   # TRUE
a <= 3    # FALSE
a == b    # FALSE
a != b    # TRUE

# Relational operators are vectorised
scores <- c(45, 78, 90, 62)
scores >= 60   # FALSE TRUE TRUE TRUE

Dua kebiasaan ini menghemat waktu. Gunakan == untuk perbandingan dan <- untuk penugasan, karena tanda = tunggal di dalam kondisi adalah kesalahan umum pemula. Dan hindari == pada bilangan desimal: pembulatan bilangan desimal berarti 0.1 + 0.2 == 0.3 adalah FALSE, jadi isTRUE(all.equal(0.1 + 0.2, 0.3)) adalah pengujian yang aman. Perbandingan pada kerangka data yang diurutkan Ikuti aturan yang sama.

R Logis Operatorso

Dengan operator logika, kita ingin mengembalikan nilai di dalam vektor berdasarkan kondisi logika. Tabel di bawah ini mencantumkan operator logika yang tersedia di R.

Tabel referensi operator logika dan relasional di R beserta artinya.

Pernyataan logis dalam R dibungkus di dalam tanda kurung siku []. Kita dapat menambahkan pernyataan kondisional sebanyak yang kita inginkan, tetapi kita perlu menyertakannya dalam tanda kurung. Kita dapat mengikuti struktur ini untuk membuat pernyataan kondisional:

variable_name[(conditional_statement)]

Dengan `variable_name` mengacu pada variabel yang ingin kita gunakan untuk pernyataan tersebut, kita membuat pernyataan logis, misalnya `variable_name > 0`. Terakhir, kita menggunakan tanda kurung siku untuk menyelesaikan pernyataan logis tersebut. Berikut adalah contoh pernyataan logis.

Contoh 1: Membandingkan Setiap Elemen Vektor

# Create a vector from 1 to 10
logical_vector <- c(1:10)
logical_vector>5

Keluaran:

## [1]FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE

Pada output di atas, R membaca setiap nilai dan membandingkannya dengan pernyataan logical_vector>5. Jika nilainya lebih besar dari lima, maka kondisinya BENAR, jika tidak SALAH. R mengembalikan vektor yang berisi BENAR dan SALAH.

Contoh 2: Hanya Simpan Elemen yang Sesuai

Dalam contoh di bawah ini, kita ingin ...tract nilai-nilai yang hanya memenuhi syarat 'lebih besar dari lima'. Untuk itu, kita dapat membungkus syarat tersebut di dalam tanda kurung siku yang didahului oleh vektor yang berisi nilai-nilai tersebut.

# Print value strictly above 5
logical_vector[(logical_vector>5)]

Keluaran:

## [1]  6  7  8  9 10

Contoh 3: Menggabungkan Dua Kondisi

# Print 5 and 6
logical_vector <- c(1:10)
logical_vector[(logical_vector>4) & (logical_vector<7)]

Keluaran:

## [1] 5 6

Contoh 3 sengaja menggunakan ampersand tunggal &. Operator karakter tunggal & dan | membandingkan vektor elemen demi elemen dan mengembalikan vektor, yang dibutuhkan oleh subsetting. Bentuk ganda && dan || mengembalikan satu nilai dan termasuk dalam kondisi if() dan while(). Karena R 4.3.0Memberikan argumen yang lebih panjang dari satu elemen ke && atau || akan menghasilkan kesalahan, bukan peringatan, sehingga kedua kelompok operator tersebut tidak lagi dapat saling menggantikan. Operator ! meniadakan suatu kondisi, dan xor() memberikan operasi OR eksklusif.

Tugas R Operatorso

Operator penugasan mengikat nilai ke sebuah nama. R menawarkan lebih banyak operator penugasan daripada kebanyakan bahasa pemrograman, dan perbedaannya menjadi penting begitu kode masuk ke dalam proses pemrograman. fungsi.

Operator Deskripsi
<- Penugasan kiri, pilihan idiomatik dalam R
= Penugasan kiri, tetapi biasanya dikhususkan untuk argumen fungsi.
-> Penugasan yang tepat, valid tetapi jarang digunakan
<<- Penugasan super yang mencari lingkungan sekitarnya
- >> Penugasan super yang tepat
# Left assignment -- the idiomatic form
count <- 5

# Equals sign: works, but reserve it for function arguments
count = 5
round(3.14159, digits = 2)

# Right assignment
5 -> count

# Superassignment, used inside functions to reach an outer scope
count <<- 5

Panduan gaya merekomendasikan penggunaan <- untuk membuat objek dan = untuk memberi nama argumen di dalam panggilan fungsi, karena kedua peran tersebut tetap terlihat berbeda secara visual. Gunakan <<- dengan hemat: ini mengubah objek di luar fungsi saat ini dan membuat kode lebih sulit dipahami. Setelah penugasan dan tipe data dipahami, langkah selanjutnya adalah... mengimpor data nyata dan reshaping dengan dplyr; itu Gambaran umum bahasa R Menempatkan seluruh rangkaian alat dalam konteks yang tepat.

Pertanyaan Umum Demo Slot

Vektor hanya menyimpan elemen dari satu tipe saja, dan pencampuran tipe akan memaksa konversi tipe. List menyimpan apa pun di setiap slotnya, termasuk list lain, data frame, atau fungsi, itulah sebabnya objek model berupa list.

Ketika dua vektor dengan panjang berbeda bertemu dengan sebuah operator, R akan mengulangi vektor yang lebih pendek hingga panjangnya sama. c(1,2,3,4) + c(1,2) menghasilkan 2 4 4 6. Peringatan hanya muncul ketika panjang yang lebih panjang bukan kelipatan.

NA menandai nilai yang hilang di dalam vektor. NULL menandai tidak adanya objek dan memiliki panjang nol. NaN adalah hasil numerik yang tidak terdefinisi seperti 0/0. Inf adalah pembagian dengan nol, seperti 1/0.

Operator %in% menguji keanggotaan dan mengembalikan TRUE untuk setiap elemen kiri yang ditemukan dalam vektor kanan. c(2,7) %in% c(1,2,3) mengembalikan TRUE FALSE. Ini menggantikan rangkaian panjang perbandingan == yang digabungkan dengan |.

Pilih matriks untuk grid numerik dan aljabar linear, sebuah bingkai data untuk tabel yang kolomnya berbeda jenis, dan sebuah daftar ketika elemen-elemen memiliki bentuk yang berbeda.

Diperkenalkan di R 4.1.0, |> meneruskan nilai di sebelah kirinya ke argumen pertama fungsi di sebelah kanannya. Ini menghubungkan langkah-langkah tanpa panggilan bersarang dan tidak memerlukan paket, tidak seperti pipe magrittr %>%.

Asisten AI menandai ketidaksesuaian tipe, menyarankan konversi as.*, dan menyusun kode pengkodean ulang dari sampel baris. Mereka juga mengusulkan langkah-langkah rekayasa fitur sebelum Mesin belajar Model sudah disesuaikan. Selalu periksa kode yang dihasilkan dan bandingkan dengan data Anda.

Ya. RStudio 2023.09.0 dan versi yang lebih baru menyertakan Kopilot GitHub Integrasi yang melengkapi ekspresi R secara langsung. Langganan Copilot diperlukan, dan administrator harus mengaktifkannya di RStudio Server atau Posit Workbench.

Ringkaslah postingan ini dengan: