Bir dize değişkeni [duplicate] ile mutate () 'de mevcut bir sütuna nasıl erişilir

Jan 09 2021

Zaten "dplyr" de Dinamik değişken adlarını kullan'ı okudum, ancak benim sorunum zaten var olan bir sütunu bir dize değişkeni olarak saklanan bir sütun adıyla değiştirmek.

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"

Şimdi colAkullanarak değiştirmek istiyorumnamestring

İsimlendirme olmadan istenen çıktı böyledir.

data %>%
  dplyr::mutate(colA = colB * 100)

## A tibble: 2 x 2
#   colA  colB
#  <dbl> <dbl>
#1   200     2
#2   400     4

Ama dplyr programlamayı kullanırken bana hata veriyor

namestring <- "colA"
data %>%
  dplyr::mutate(.data[[namestring]] = colB + 2)

# Error: unexpected '=' in:
# "data %>%
#   dplyr::mutate(.data[[namestring]] ="

filterve LHS'de selectkullanarak aynı türden bir hata üretmeyin.data[[string]]

data %>%
  dplyr::filter(.data[[namestring]] == 3)

## A tibble: 1 x 2
#   colA  colB
#  <dbl> <dbl>
#1     3     4

Yanıtlar

2 akrun Jan 09 2021 at 04:46

Biz kullanabilirsiniz :=ile!!

library(dplyr)
data %>% 
    mutate(!! namestring := colB * 100)

-çıktı

# A tibble: 2 x 2
#   colA  colB
#  <dbl> <dbl>
#1   200     2
#2   400     4    

Veya içinde olabilir across

data %>%
    mutate(across(all_of(namestring), ~ colB* 100))
# A tibble: 2 x 2
#   colA  colB
#  <dbl> <dbl>
#1   200     2
#2   400     4