एक स्ट्रिंग चर [डुप्लिकेट] के साथ म्यूट () में मौजूदा स्तंभ तक कैसे पहुंचें
मैंने पहले ही डायनामिक वैरिएबल नामों का उपयोग 'dplyr' में किया है, लेकिन मेरी समस्या पहले से मौजूद कॉलम को स्ट्रिंग वैरिएबल के रूप में संग्रहीत कॉलम नाम से बदलना है।
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"
अब मैं colA
प्रयोग को संशोधित करना चाहता हूंnamestring
Namestring के बिना वांटेड आउटपुट ऐसा है।
data %>%
dplyr::mutate(colA = colB * 100)
## A tibble: 2 x 2
# colA colB
# <dbl> <dbl>
#1 200 2
#2 400 4
लेकिन यह मुझे dplyr प्रोग्रामिंग का उपयोग करके त्रुटि देता है
namestring <- "colA"
data %>%
dplyr::mutate(.data[[namestring]] = colB + 2)
# Error: unexpected '=' in:
# "data %>%
# dplyr::mutate(.data[[namestring]] ="
filter
और LHS select
का उपयोग करके एक ही तरह की त्रुटि उत्पन्न नहीं करते हैं.data[[string]]
data %>%
dplyr::filter(.data[[namestring]] == 3)
## A tibble: 1 x 2
# colA colB
# <dbl> <dbl>
#1 3 4
जवाब
2 akrun
हम के :=
साथ उपयोग कर सकते हैं!!
library(dplyr)
data %>%
mutate(!! namestring := colB * 100)
आउटपुट
# A tibble: 2 x 2
# colA colB
# <dbl> <dbl>
#1 200 2
#2 400 4
या यह भीतर हो सकता है across
data %>%
mutate(across(all_of(namestring), ~ colB* 100))
# A tibble: 2 x 2
# colA colB
# <dbl> <dbl>
#1 200 2
#2 400 4