Ada switch
pernyataan tetapi saya tidak pernah bisa membuatnya bekerja seperti yang saya kira seharusnya. Karena Anda belum memberikan contoh, saya akan membuatnya menggunakan variabel faktor:
dft <-data.frame(x = sample(letters[1:8], 20, replace=TRUE))
levels(dft$x)
[1] "a" "b" "c" "d" "e" "f" "g" "h"
Jika Anda menentukan kategori yang Anda inginkan dalam urutan yang sesuai dengan penugasan ulang, Anda dapat menggunakan faktor atau variabel numerik sebagai indeks:
c("abc", "abc", "abc", "def", "def", "def", "g", "h")[dft$x]
[1] "def" "h" "g" "def" "def" "abc" "h" "h" "def" "abc" "abc" "abc" "h" "h" "abc"
[16] "def" "abc" "abc" "def" "def"
dft$y <- c("abc", "abc", "abc", "def", "def", "def", "g", "h")[dft$x] str(dft)
'data.frame': 20 obs. of 2 variables:
$ x: Factor w/ 8 levels "a","b","c","d",..: 4 8 7 4 6 1 8 8 5 2 ...
$ y: chr "def" "h" "g" "def" ...
Saya kemudian mengetahui bahwa sebenarnya ada dua fungsi sakelar yang berbeda. Ini bukan fungsi umum tetapi Anda harus memikirkannya sebagai salah satu switch.numeric
atau switch.character
. Jika argumen pertama Anda adalah 'faktor' R, Anda mendapatkan switch.numeric
perilaku, yang mungkin menyebabkan masalah, karena kebanyakan orang melihat faktor ditampilkan sebagai karakter dan membuat asumsi yang salah bahwa semua fungsi akan memprosesnya seperti itu.
dput()
b) Apakah Anda menginginkan solusi dalam basis R, dplyr, data.table, tidyverse ...?