文字列変数を使用してmutate()の既存の列にアクセスする方法[重複]
私はすでに`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]]
LHSに
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