问题
SparkR的regexp_replace应该遵循Java regex规则,但我很难识别某些符号。
重排
在这个版本中,我可以识别"<"、"-"和"",但不能识别"> "或 "+"。
# Load packages
library(tidyverse)
library(sparklyr)
library(SparkR)
# Create data
df <- data.frame(test = c("<5", ">5", "3(a)", "a-a", "b+b", "c/c", "d d", "3..3"))
# Transfer data to Spark memory
df <- copy_to(sc, df, "df", overwrite = TRUE)
# Modify data
df1 <- df %>%
dplyr::mutate(
test = regexp_replace(test, "[<]", "_"),
test = regexp_replace(test, "[>]", "_"),
test = regexp_replace(test, "[-]", "_"),
test = regexp_replace(test, "[+]", "_"),
test = regexp_replace(test, "[/]", "_"))
# Collect and print results
df2 <- df1 %>% as.data.frame()
df2
解决方法
# Load packages
library(tidyverse)
library(sparklyr)
library(SparkR)
# Create data
df <- data.frame(test = c("<5", ">5", "3(a)", "a-a", "b+b", "c/c", "d d", "3..3"))
# Transfer data to Spark memory
df <- copy_to(sc, df, "df", overwrite = TRUE)
# Modify data
df1 <- df %>%
dplyr::mutate(
test = regexp_replace(test, "[<>+/-]", "_"))
# Collect and print results
df2 <- df1 %>% as.data.frame()
df2
不知道sparkr是如何工作的,但你可以做这样的事情。
df1 <- df %>%
dplyr::mutate(
test = regexp_replace(test, "[<>+/-]", "_"),
在这个案例中 /
你可能不得不这样做。
test = regexp_replace(test, "[<>+\\/-]", "_"),