Cara mengakses kolom yang ada di mutate () dengan variabel string [duplikat]
Saya sudah membaca Gunakan nama variabel dinamis di `dplyr` tetapi masalah saya adalah memutasi kolom yang sudah ada dengan nama kolom yang disimpan sebagai variabel string.
data <- tibble::tribble(
~colA, ~colB,
1, 2,
3, 4
)
namestring <- "colA"
----
> data
# A tibble: 2 x 2
colA colB
<dbl> <dbl>
1 1 2
2 3 4
> namestring
[1] "colA"
Sekarang saya ingin memodifikasi colA
penggunaannamestring
Output yang diinginkan tanpa namestring adalah seperti ini.
data %>%
dplyr::mutate(colA = colB * 100)
## A tibble: 2 x 2
# colA colB
# <dbl> <dbl>
#1 200 2
#2 400 4
Tapi itu memberi saya kesalahan menggunakan pemrograman dplyr
namestring <- "colA"
data %>%
dplyr::mutate(.data[[namestring]] = colB + 2)
# Error: unexpected '=' in:
# "data %>%
# dplyr::mutate(.data[[namestring]] ="
filter
dan select
tidak menghasilkan kesalahan yang sama dengan menggunakan .data[[string]]
di LHS
data %>%
dplyr::filter(.data[[namestring]] == 3)
## A tibble: 1 x 2
# colA colB
# <dbl> <dbl>
#1 3 4
Jawaban
2 akrun
Kita bisa gunakan :=
dengan!!
library(dplyr)
data %>%
mutate(!! namestring := colB * 100)
-keluaran
# A tibble: 2 x 2
# colA colB
# <dbl> <dbl>
#1 200 2
#2 400 4
Atau bisa juga di dalam across
data %>%
mutate(across(all_of(namestring), ~ colB* 100))
# A tibble: 2 x 2
# colA colB
# <dbl> <dbl>
#1 200 2
#2 400 4
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Taylor Sheridan Baru Menambahkan 1 Bintang 'Yellowstone' Favoritnya ke Pemeran 'Lawmen: Bass Reeves'