如何替换 'numeric' 和 '.'同时

How to replace 'numeric' and '.' at the same time

在 R 数据框中,我想替换所有数字和“.”至 'other'。 这是下面的代码,有两种方法(我想要两种方法来解决它)。 任何人都可以帮忙吗?谢谢!

library(tidyverse)

test_data <- data.frame(category = c('.', '2.1', '2.33', 'A', 'B'))

#method 1
test_data %>% mutate(category = str_replace_all(category, "![A-B]", "other"))

#method 2
test_data %>% mutate(category = str_replace_all(category, "(.)|(\d.*)", "other"))

您需要在第二个示例中正确转义 .\d

test_data %>%
  mutate(category = str_replace_all(category, "(\.)|(\d.*)", "other"))
#>   category
#> 1    other
#> 2    other
#> 3    other
#> 4        A
#> 5        B

类似于@caldwellst 提出的解决方案,可以说更具可读性:

gsub('^(\d|\.)+$', 'other', test_data$category)

# [1] "other" "other" "other" "A"     "B"