cv.cm

Pemrograman · Bahasa pemrograman

Tutorial pemrograman R untuk pemula

6 menit baca

Jawaban singkat

R adalah bahasa dan lingkungan gratis untuk statistik, analisis data, dan grafik. Ide intinya adalah vektorisasi: operasi diterapkan pada seluruh vektor dan kolom data frame sekaligus, sehingga kode analisis tetap ringkas. Halaman ini membahas instalasi R, menjalankan skrip, vektor dan tipe, alur kontrol, fungsi, list dan data frame, model statistik, pembuatan plot, dan penanganan error.

Apa itu R dan untuk apa digunakan

R adalah bahasa dan lingkungan open source gratis untuk komputasi statistik dan grafik. R diturunkan dari bahasa S yang dikembangkan di Bell Labs dan dipelihara oleh R Core Team. R bersifat vectorized: sebagian besar operasi bekerja pada seluruh vektor data sekaligus, sehingga kode analisis data menjadi ringkas.

R dipakai oleh ahli statistik, data scientist, bioinformatikawan, ekonom, dan peneliti untuk membersihkan data, membuat model statistik, visualisasi, dan laporan yang dapat direproduksi. Ribuan package tambahan tersedia dari CRAN (Comprehensive R Archive Network) dan Bioconductor.

Instal R dan jalankan Hello, world

Unduh R dari CRAN untuk Windows, macOS, atau Linux. Banyak orang juga menginstal RStudio atau Positron, yaitu IDE dengan editor, konsol, penampil plot, dan panel bantuan. Anda bisa mengetik kode langsung di konsol R atau menyimpannya dalam file .R.

# hello.R
print("Hello, world!")
cat("Hello, world!\n")
Rscript hello.R
# [1] "Hello, world!"
# Hello, world!

print menampilkan nilai seperti yang dilakukan konsol, dengan awalan indeks [1]. cat menulis teks polos, sehingga Anda menambahkan baris baru sendiri.

Variabel, tipe dasar, dan vektor

Beri nilai dengan <- (gaya konvensional) atau =. Di R tidak ada skalar: satu angka adalah vektor dengan panjang 1. c() menggabungkan nilai menjadi vektor, dan aritmetika diterapkan elemen demi elemen.

x <- 42                 # numeric (double)
n <- 7L                 # integer (L suffix)
name <- "Ada"           # character
ok <- TRUE              # logical
class(x); class(n); class(name)   # "numeric" "integer" "character"
v <- c(2, 4, 6, 8)
v * 10                  # [1] 20 40 60 80
v[2]                    # [1] 4   (indexing starts at 1)
v[v > 4]                # [1] 6 8
length(v); sum(v); mean(v)        # 4 20 5
1:5                     # [1] 1 2 3 4 5
seq(0, 1, by = 0.25)    # [1] 0.00 0.25 0.50 0.75 1.00
TipeContohCatatan
numeric (double)3.14, 42default untuk angka
integer42Lbilangan bulat dengan akhiran L
character"text"string
logicalTRUE, FALSENA berarti nilai yang hilang
factorfactor(c("lo", "hi"))data kategorikal dengan level tetap

Alur kontrol

R punya if/else, for, while, dan repeat. Untuk vektor, ifelse() yang tervektorisasi sering lebih baik daripada loop.

temp <- 25
if (temp > 30) {
  print("hot")
} else if (temp > 15) {
  print("mild")         # [1] "mild"
} else {
  print("cold")
}
for (i in 1:3) {
  cat("step", i, "\n")  # step 1 / step 2 / step 3
}
scores <- c(45, 80, 62)
ifelse(scores >= 50, "pass", "fail")
# [1] "fail" "pass" "pass"

if membutuhkan satu TRUE atau FALSE. Memberikan vektor yang lebih panjang ke if adalah error di R 4.2 ke atas; gunakan any(), all(), atau ifelse() sebagai gantinya.

Fungsi

Fungsi dibuat dengan function dan diberi nama. Ekspresi terakhir yang dievaluasi dikembalikan otomatis; return() hanya diperlukan untuk keluar lebih awal. Argumen bisa punya nilai default dan bisa diberikan dengan nama.

bmi <- function(weight_kg, height_m = 1.75) {
  weight_kg / height_m^2
}
bmi(70)                          # [1] 22.85714
bmi(height_m = 1.6, weight_kg = 60)  # [1] 23.4375
square <- function(x) x^2
square(1:4)                      # [1] 1 4 9 16 (vectorized)
sapply(c(1, 4, 9), sqrt)         # [1] 1 2 3
(\(x) x + 1)(10)                 # [1] 11 (short lambda syntax)

Sintaks lambda singkat \(x) tersedia sejak R 4.1, begitu juga native pipe |>, yang meneruskan sisi kiri sebagai argumen pertama: c(1, 4, 9) |> sqrt() |> sum() menghasilkan 6.

Struktur data inti: vektor, list, dan data frame

Selain vektor atomik, R punya list (yang bisa menampung nilai dengan tipe berbeda), matriks, dan data frame. Data frame adalah tabel tempat setiap kolom berupa vektor dengan panjang yang sama; ini adalah struktur utama untuk analisis data.

person <- list(name = "Ann", age = 31, langs = c("R", "SQL"))
person$name                 # [1] "Ann"
person[["langs"]][2]        # [1] "SQL"
df <- data.frame(
  name  = c("Ann", "Bo", "Cy"),
  age   = c(31, 25, 40),
  city  = c("Oslo", "Rome", "Oslo")
)
nrow(df)                    # [1] 3
df$age                      # [1] 31 25 40
df[df$age > 30, "name"]     # [1] "Ann" "Cy"
df$senior <- df$age >= 40   # add a column
aggregate(age ~ city, data = df, FUN = mean)
#   city  age
# 1 Oslo 35.5
# 2 Rome 25.0
str(df)                     # compact structure summary

df[rows, columns] memilih berdasarkan posisi, nama, atau kondisi logis. Mengosongkan salah satu sisi, seperti pada df[1, ], berarti semua baris atau semua kolom.

Statistik dan pembuatan plot

Fungsi statistik sudah tersedia: summary, sd, quantile, cor, t.test, dan lm (model linear), di antara banyak lainnya. Base graphics menggambar plot dengan satu panggilan.

set.seed(1)
x <- 1:20
y <- 3 * x + rnorm(20, sd = 2)
model <- lm(y ~ x)
round(coef(model), 2)       # intercept near 0, slope near 3
summary(model)$r.squared    # close to 1
plot(x, y, main = "y vs x")
abline(model, col = "red")

Sintaks formula y ~ x berarti "modelkan y sebagai fungsi dari x" dan dipakai di berbagai fungsi pemodelan. Untuk grafik lanjutan dan data wrangling, kebanyakan pengguna menginstal package tidyverse, seperti ggplot2 dan dplyr, dengan install.packages("tidyverse").

Penanganan error

Munculkan error dengan stop() dan peringatan dengan warning(). Tangkap keduanya dengan tryCatch(), yang menerima fungsi handler untuk error, warning, dan blok finally opsional.

safe_log <- function(x) {
  if (!is.numeric(x)) stop("x must be numeric")
  if (any(x <= 0)) warning("non-positive values give NaN or -Inf")
  log(x)
}
result <- tryCatch(
  safe_log("ten"),
  error = function(e) {
    message("Caught: ", conditionMessage(e))
    NA
  },
  finally = message("done")
)
# Caught: x must be numeric
# done
result                      # [1] NA

Program lengkap kecil: ringkasan penjualan

Skrip ini membuat tabel penjualan kecil, menghitung pendapatan per wilayah dengan base R, dan mencetak wilayah terbaik.

sales <- data.frame(
  region = c("North", "South", "North", "East", "South"),
  units  = c(10, 4, 6, 8, 12),
  price  = c(2.5, 3.0, 2.5, 4.0, 3.0)
)
sales$revenue <- sales$units * sales$price
by_region <- aggregate(revenue ~ region, data = sales, FUN = sum)
by_region <- by_region[order(-by_region$revenue), ]
print(by_region, row.names = FALSE)
#  region revenue
#   South      48
#   North      40
#    East      32
best <- by_region$region[1]
cat(sprintf("Best region: %s (%.2f)\n", best, max(by_region$revenue)))
# Best region: South (48.00)

Langkah selanjutnya

  • An Introduction to R, manual resmi di CRAN.
  • Bantuan bawaan: ketik ?mean atau help("lm") di konsol.
  • R for Data Science oleh Hadley Wickham dan rekan-rekannya, gratis secara online, untuk pendekatan tidyverse.
  • CRAN Task Views, yang mendaftar package menurut bidang seperti ekonometrika atau machine learning.

FAQ

Mana yang lebih baik untuk analisis data, R atau Python?

Keduanya kuat. R punya pustaka metode statistik yang mendalam dan plotting yang sangat baik, serta umum di dunia akademik dan biostatistik; Python lebih serbaguna dan dominan di rekayasa machine learning. Banyak analis mempelajari keduanya.

Apa perbedaan <- dan = di R?

Keduanya melakukan assignment di tingkat atas, dan <- adalah gaya konvensional. Di dalam pemanggilan fungsi, = menamai argumen, jadi f(x = 1) meneruskan argumen, bukan membuat variabel.

Mengapa R mulai menghitung dari 1?

R mengikuti konvensi matematika dan statistika, seperti pendahulunya S, sehingga elemen pertama vektor adalah v[1]. Indeks 0 mengembalikan vektor kosong, bukan error.

Apa itu tidyverse?

Tidyverse adalah kumpulan package R, termasuk dplyr, ggplot2, dan tidyr, yang berbagi desain konsisten untuk mengimpor, membersihkan, mengubah, dan memplot data.

Bagaimana cara menginstal package R?

Jalankan install.packages("name") sekali untuk mengunduhnya dari CRAN, lalu library(name) di setiap sesi untuk memuatnya.

Semua tutorial pemrograman