Вы должны исправить свой код для экранирования как на стороне R, так и на стороне Java, так что на самом деле вам нужно "\\\\\\\\"
:
df <- copy_to(sc, tibble(word = "(abc\\zyx: 1)"))
df %>% mutate(regexp_replace(word, "\\\\\\\\", ""))
# Source: lazy query [?? x 2]
# Database: spark_shell_connection
word `regexp_replace(word, "\\\\\\\\\\\\\\\\", "")`
<chr> <chr>
1 "(abc\\zyx:1)" (abczyx: 1)
В зависимости от ваших точных требований может быть проще сопоставить все символы одновременно. Например, вы можете сохранить только слова (\w
) и пробелы (\s
):
df %>% mutate(regexp_replace(word, "[^\\\\w+\\\\s+]", ""))
# Source: lazy query [?? x 2]
# Database: spark_shell_connection
word `regexp_replace(word, "[^\\\\\\\\w+\\\\\\\\s+]", "")`
<chr> <chr>
1 "(abc\\zyx: 1)" abczyx 1
или только слово символов
df %>% mutate(regexp_replace(word, "[^\\\\w+]", ""))
# Source: lazy query [?? x 2]
# Database: spark_shell_connection
word `regexp_replace(word, "[^\\\\\\\\w+]", "")`
<chr> <chr>
1 "(abc\\zyx: 1)" abczyx1