Regex para especificar uma única ocorrência do padrão

Boa tarde!

Estou com um problema para usar o stringr::str_replace() e acredito que seja por não encontrar a expressão regex correta.

Dada a tabela:

duvida <- data.frame(coluna = c("X", "XX"))

Eu quero que a todas as linhas possuam XX, então tentei:

duvida %>% mutate(coluna = 
                   str_replace(coluna,
                               pattern = "X", 
                               replacement = "XX"))

Mas isso transforma em XX e XXX. Como eu especifico que quero realizar a transformação apenas nas linhas que possuam um único X?

O máximo que pensei foi usar \ para especificar primeira ocorrência, mas ainda não funcionou.

duvida %>% mutate(coluna = 
                   str_replace(coluna,
                               pattern = "\\X", 
                               replacement = "XX"))

Abraço!

Segue a minha sugestão de regex e uma alternativa sem regex:

# Tabela
duvida <- dplyr::tibble(coluna = c("X", "XX"))

# Transformação
dplyr::mutate(duvida, coluna = stringr::str_replace(coluna, "^X$", "XX"))
#> # A tibble: 2 x 1
#>   coluna
#>   <chr> 
#> 1 XX    
#> 2 XX

# Alternativa
dplyr::mutate(duvida, coluna = ifelse(coluna == "X", "XX", coluna))
#> # A tibble: 2 x 1
#>   coluna
#>   <chr> 
#> 1 XX    
#> 2 XX

Created on 2021-03-25 by the reprex package (v1.0.0)

1 curtida