Fungsi Anonim
Termasuk bagian Logika dan Alur dalam perjalanan R di Coddy. Pelajaran 27 dari 64.
Di R, fungsi adalah nilai seperti angka atau string. function(x) x * 2 membuat fungsi tanpa memberinya nama, dan nilai dari ekspresi terakhirnya adalah nilai yang dikembalikan:
double <- function(x) x * 2
print(double(21))
print((function(x) x + 1)(9))Output:
[1] 42
[1] 10R 4.1 menambahkan bentuk singkat: \(x) artinya sama dengan function(x). Gunakan kurung kurawal jika isi fungsi memerlukan beberapa baris:
square <- \(x) x^2
label <- function(x) {
size <- if (x > 10) "big" else "small"
paste(x, "is", size)
}
print(square(4))
print(label(12))Output:
[1] 16
[1] "12 is big"Karena fungsi adalah nilai, list dapat menyimpan beberapa fungsi dengan nama tertentu. ops[["inc"]] adalah fungsi, jadi ops[["inc"]](5) memanggilnya:
ops <- list(inc = \(x) x + 1, neg = \(x) -x)
print(ops[["inc"]](5))
print(names(ops))Output:
[1] 6
[1] "inc" "neg"Sebuah fungsi dapat menerima beberapa argumen dan memberikan nilai default untuk beberapa di antaranya, sama seperti fungsi bernama:
area <- \(w, h = w) w * h
print(area(3))
print(area(3, 5))Output:
[1] 9
[1] 15Tantangan
MudahLengkapi list ops dengan tiga fungsi anonim yang masing-masing menerima satu argumen:
doublemengembalikan argumen dikali 2squaremengembalikan argumen dikali dirinya sendirinegatemengembalikan argumen dengan tandanya dibalik
Kode yang disediakan membaca nama operasi dan sebuah angka, memanggil fungsi tersebut dari ops, lalu mencetak hasilnya.
Coba sendiri
ops <- list(
# Tulis kodemu di sini
double = function(x) x
)
# Kode input/output yang disediakan: biarkan apa adanya
input <- suppressWarnings(readLines(file("stdin")))
f <- ops[[input[1]]]
cat(f(as.numeric(input[2])), sep = "\n")
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami string
Substring dengan substr()Memformat dengan sprintf()Memisahkan dan MenggabungkanMencari stringMengganti TeksRangkuman: Pembuat Nama Pengguna4Matriks
Membuat MatriksMengakses Elemen MatriksRingkasan Baris dan KolomAritmetika MatriksRangkuman: Denah Tempat Duduk2Pencarian Nilai-Kunci
Pencarian pada Vector BernamaMemeriksa KunciMenambahkan dan Menghapus KunciMenelusuri NamaUlasan: Meja Saham5Proyek, Buku Nilai
Menambahkan SiswaMencatat Nilai3Set dan Penghitungan
Nilai UnikOperasi setPengujian KeanggotaanMenghitung dengan table()Ulasan: Tamu Acara6Fungsi sebagai Nilai
Fungsi AnonimMengirim FungsiMengembalikan FungsiClosure dengan StateRangkuman: Aturan Diskon9Data Frame
Membuat Data FrameKolom dan BarisMemfilter BarisMenambahkan dan MengurutkanRangkuman: Laporan Penjualan12Proyek: Pelacak Pengeluaran
Mencatat PengeluaranTotal PengeluaranLatihan sendiri: Compiler R online