문자열 변수 [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]] ="
filter
및 select
사용하여 오류의 동일한 종류를 생산하지 않는 .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