regexp_replace 中的正则表达式问题
Regex issue in regexp_replace
问题
SparkR 的 regexp_replace 应遵循 Java 正则表达式规则,但我很难识别某些符号。
Reprex
在这个代表中,我设法识别“<”、“-”和“/”,但不是“>”或“+”。
# 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, "[<>+\/-]", "_"),
问题
SparkR 的 regexp_replace 应遵循 Java 正则表达式规则,但我很难识别某些符号。
Reprex
在这个代表中,我设法识别“<”、“-”和“/”,但不是“>”或“+”。
# 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, "[<>+\/-]", "_"),