Como acessar uma coluna existente em mutate () com uma variável de string [duplicado]
Eu já li Usar nomes de variáveis dinâmicas em `dplyr`, mas meu problema é transformar uma coluna já existente com um nome de coluna armazenado como uma variável de string.
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"
Agora eu quero modificar o colA
usandonamestring
A saída desejada sem cadeia de nomes é assim.
data %>%
dplyr::mutate(colA = colB * 100)
## A tibble: 2 x 2
# colA colB
# <dbl> <dbl>
#1 200 2
#2 400 4
Mas me dá um erro ao usar a programação dplyr
namestring <- "colA"
data %>%
dplyr::mutate(.data[[namestring]] = colB + 2)
# Error: unexpected '=' in:
# "data %>%
# dplyr::mutate(.data[[namestring]] ="
filter
e select
não produz o mesmo tipo de erro usando .data[[string]]
no LHS
data %>%
dplyr::filter(.data[[namestring]] == 3)
## A tibble: 1 x 2
# colA colB
# <dbl> <dbl>
#1 3 4
Respostas
2 akrun
Podemos usar :=
com!!
library(dplyr)
data %>%
mutate(!! namestring := colB * 100)
-resultado
# A tibble: 2 x 2
# colA colB
# <dbl> <dbl>
#1 200 2
#2 400 4
Ou pode ser dentro across
data %>%
mutate(across(all_of(namestring), ~ colB* 100))
# A tibble: 2 x 2
# colA colB
# <dbl> <dbl>
#1 200 2
#2 400 4
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino