0Pricing
R Academy · Pelajaran

Gambaran Umum Sistem Tipe R

Pahami tipe double, integer, character, logical, dan complex.

Gambaran Umum Sistem Tipe R adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar R Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus R Academy mencakup 4 pelajaran total.

Sistem Tipe R

R memiliki sistem tipe yang kaya. Setiap objek memiliki class (kategori tingkat tinggi) dan type (mode penyimpanan tingkat rendah). Memahami keduanya membantu Anda menulis kode yang benar dan efisien serta men-debug error terkait tipe.

# Check class and type of various objects
cat('class(42L)    :', class(42L), '
')
cat('typeof(42L)   :', typeof(42L), '
')
cat('class(3.14)   :', class(3.14), '
')
cat('typeof(3.14)  :', typeof(3.14), '
')
cat('class(TRUE)   :', class(TRUE), '
')
cat('class("hello"):', class('hello'), '
')

class() vs typeof()

class(x) mengembalikan kategori tingkat tinggi yang digunakan oleh sistem berorientasi objek R (misalnya, 'integer', 'numeric', 'matrix'). typeof(x) mengembalikan tipe penyimpanan C tingkat rendah (misalnya, 'integer', 'double', 'closure').

m <- matrix(1:4, nrow = 2)
cat('class(matrix)  :', class(m), '
')   # matrix array
cat('typeof(matrix) :', typeof(m), '
')  # integer

f <- factor(c('a', 'b', 'a'))
cat('class(factor)  :', class(f), '
')   # factor
cat('typeof(factor) :', typeof(f), '
')  # integer (stored as int!)

cat('class(list)    :', class(list()), '
')  # list
cat('typeof(list)   :', typeof(list()), '
') # list

is.numeric() — Pemeriksaan Numeric

is.numeric(x) mengembalikan TRUE untuk nilai integer maupun double (dan matriks numeric). Fungsi ini memeriksa supertipe numeric, bukan mode penyimpanan tertentu.

cat('is.numeric(3.14):', is.numeric(3.14), '
')    # TRUE (double)
cat('is.numeric(3L):  ', is.numeric(3L), '
')      # TRUE (integer)
cat('is.numeric(TRUE):', is.numeric(TRUE), '
')    # FALSE
cat('is.numeric("3"): ', is.numeric('3'), '
')     # FALSE
cat('is.numeric(NA):  ', is.numeric(NA), '
')      # FALSE (NA is logical)

is.integer() vs is.double()

is.integer() menguji secara khusus penyimpanan integer (yang dibuat dengan akhiran L atau as.integer()). is.double() menguji penyimpanan floating-point (double). Keduanya merupakan subset dari numeric.

x_int <- 5L
x_dbl <- 5.0

cat('--- x_int = 5L ---
')
cat('is.integer:', is.integer(x_int), '
')  # TRUE
cat('is.double: ', is.double(x_int), '
')   # FALSE
cat('is.numeric:', is.numeric(x_int), '
')  # TRUE

cat('--- x_dbl = 5.0 ---
')
cat('is.integer:', is.integer(x_dbl), '
')  # FALSE
cat('is.double: ', is.double(x_dbl), '
')   # TRUE
cat('is.numeric:', is.numeric(x_dbl), '
')  # TRUE

is.character() — Pemeriksaan String

is.character(x) mengembalikan TRUE jika x adalah vektor character (string). Gunakan fungsi ini untuk memvalidasi input yang seharusnya berupa teks, atau untuk membedakan tipe NA numeric dan character.

greetings <- c('hello', 'world', 'R')
numbers <- c(1, 2, 3)
numeric_string <- '42'

cat('is.character(greetings):      ', is.character(greetings), '
')
cat('is.character(numbers):        ', is.character(numbers), '
')
cat('is.character(numeric_string): ', is.character(numeric_string), '
')
cat('is.character(NA_character_):  ', is.character(NA_character_), '
')

is.logical() — Pemeriksaan Boolean

is.logical(x) mengembalikan TRUE jika x berisi nilai logical (Boolean). Perhatikan bahwa NA tanpa tipe secara bawaan merupakan nilai logical.

flags <- c(TRUE, FALSE, TRUE, NA)
cat('is.logical(flags): ', is.logical(flags), '
')   # TRUE
cat('is.logical(NA):    ', is.logical(NA), '
')      # TRUE (default NA is logical)
cat('is.logical(1):     ', is.logical(1), '
')       # FALSE
cat('is.logical("TRUE"):', is.logical('TRUE'), '
')  # FALSE
cat('typeof(NA):        ', typeof(NA), '
')          # logical

Hierarki Tipe R

Tipe atomic R membentuk hierarki dari yang paling sederhana hingga yang paling kompleks: logical < integer < double < complex < character. Saat mencampurkan tipe dalam sebuah vektor, R mengonversi semua elemen ke tipe paling kompleks yang ada.

# Type hierarchy in action
cat('c(TRUE, 1L) type:     ', typeof(c(TRUE, 1L)), '
')   # integer
cat('c(1L, 1.5) type:      ', typeof(c(1L, 1.5)), '
')   # double
cat('c(1.5, 1+0i) type:    ', typeof(c(1.5, 1+0i)), '
') # complex
cat('c(1+0i, "a") type:   ', typeof(c(1+0i, 'a')), '
')  # character
cat('c(TRUE, "x") type:    ', typeof(c(TRUE, 'x')), '
') # character

Memeriksa Tipe Secara Terprogram

Anda dapat menulis fungsi pemeriksaan tipe untuk mengaudit daftar objek. Menggabungkan class(), typeof(), dan length() memberikan ringkasan menyeluruh tentang struktur objek apa pun.

describe_type <- function(x, label) {
  cat(label, ': class =', class(x), ', typeof =', typeof(x),
      ', length =', length(x), '
')
}

describe_type(42L,         'integer literal')
describe_type(3.14,        'double literal')
describe_type(TRUE,        'logical')
describe_type('hello',     'character')
describe_type(c(1,2,3),    'numeric vector')
describe_type(list(1,'a'), 'list')

storage.mode() dan mode()

storage.mode(x) mirip dengan typeof(x), tetapi menggunakan konvensi penamaan S3 (misalnya, mengembalikan 'double' sebagai pengganti 'double'). mode(x) mengembalikan pengelompokan yang sedikit lebih umum, yaitu menggabungkan integer dan double sebagai 'numeric'.

x_int <- 5L
x_dbl <- 5.0

cat('mode(5L):         ', mode(x_int), '
')          # numeric
cat('mode(5.0):        ', mode(x_dbl), '
')          # numeric
cat('storage.mode(5L): ', storage.mode(x_int), '
')  # integer
cat('storage.mode(5.0):', storage.mode(x_dbl), '
')  # double
# mode() lumps int+dbl; storage.mode() / typeof() distinguish them

Pemeriksaan Tipe untuk List dan Data Frame

Untuk objek yang lebih kompleks seperti list dan data frame, sapply(df, class) menerapkan class() ke setiap kolom dan menghasilkan vektor bernama yang berisi tipe kolom—cara cepat untuk mengaudit skema data frame.

df <- data.frame(
  id      = 1:3,
  name    = c('Alice', 'Bob', 'Carol'),
  score   = c(88.5, 79.0, 92.3),
  passed  = c(TRUE, TRUE, TRUE)
)
cat('Column types:
')
print(sapply(df, class))
cat('Column typeof:
')
print(sapply(df, typeof))

Ringkasan Sistem Tipe

Berikut referensi singkat untuk alat pemeriksaan tipe R:

  • class(x) — nama class S3 tingkat tinggi
  • typeof(x) — tipe penyimpanan C tingkat rendah
  • is.numeric(x) — TRUE untuk integer atau double
  • is.integer(x) — TRUE hanya untuk penyimpanan integer
  • is.double(x) — TRUE hanya untuk double (floating-point)
  • is.character(x) — TRUE untuk string
  • is.logical(x) — TRUE untuk TRUE/FALSE/NA
x <- 42L
cat('class(42L):       ', class(x), '
')
cat('typeof(42L):      ', typeof(x), '
')
cat('is.numeric(42L):  ', is.numeric(x), '
')
cat('is.integer(42L):  ', is.integer(x), '
')
cat('is.double(42L):   ', is.double(x), '
')
cat('is.character(42L):', is.character(x), '
')

Pemeriksaan Singkat

Apa hasil dari is.numeric(5L) di R?

Ringkasan: Sistem Tipe R

Kerja bagus! Hal-hal penting dari pelajaran ini:

  • class(x) mengembalikan tipe tingkat tinggi; typeof(x) mengembalikan tipe penyimpanan tingkat rendah
  • is.numeric() bernilai TRUE untuk integer maupun double
  • is.integer() dan is.double() membedakan kedua subtipe numeric tersebut
  • Hierarki tipe R (rendah → tinggi): logical → integer → double → complex → character
  • Mencampurkan tipe dalam vektor memicu konversi otomatis ke tipe tertinggi
  • sapply(df, class) mengaudit semua tipe kolom dalam data frame
# Type audit function
audit_types <- function(x, name = 'x') {
  cat(name, ': class=', class(x), ', typeof=', typeof(x),
      ', is.numeric=', is.numeric(x), '
')
}
audit_types(1L,      'integer')
audit_types(1.0,     'double')
audit_types(TRUE,    'logical')
audit_types('hello', 'character')
audit_types(1+2i,    'complex')

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Gambaran Umum Sistem Tipe R” gratis?

Ya — teks lengkap “Gambaran Umum Sistem Tipe R” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus R Academy, upgrade ke CoddyKit PRO. Kursus R Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Gambaran Umum Sistem Tipe R”?

Pahami tipe double, integer, character, logical, dan complex. Kamu berlatih R Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai R Academy?

Tidak diperlukan pengalaman sebelumnya. R Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Gambaran Umum Sistem Tipe R” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran R Academy ini?

Ya. Setiap pelajaran R Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Gambaran Umum Sistem Tipe R
  2. Mengonversi Antarjenis Numerik
  3. Konversi Logical dan Character
  4. Kesalahan Koersi dan Praktik Terbaik
← Kembali ke R Academy