문자열 변수 [duplicate]로 mutate ()의 기존 열에 액세스하는 방법

Jan 09 2021

나는 이미 `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

이름 문자열없이 원하는 출력은 다음과 같습니다.

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]] ="

filterselect사용하여 오류의 동일한 종류를 생산하지 않는 .data[[string]]좌에

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

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

답변

2 akrun Jan 09 2021 at 04:46

우리는 :=함께 사용할 수 있습니다!!

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