我正在try 将R的dplyr代码转换为R极点,如果存在部分匹配,它会用另一个字符串替换整个字符串.

library(polars)
library(dplyr)

df <- data.frame(category = c('Cats A','Cats B','kittens','street cats','dogs A','dogs B'))

#replace string that contains 'cats' and 'kitten' with 'cats'
df %>% 
  mutate(replaced = replace(category,
                            grepl(paste0(c('cats','kittens'), collapse = '|'), category, ignore.case = TRUE),
                            'CATS')
         )

#Output
     category replaced
      Cats A     CATS
      Cats B     CATS
     kittens     CATS
 street cats     CATS
      dogs A   dogs A
      dogs B   dogs B

我想在极点复制这一点,并try 如下所示:

p_df <- pl$DataFrame(df) #to polars dataframe
p_df$with_columns(replaced = pl$col('category')$str$replace_many(c("Cats","kittens"),"CATS"))

...$str$replace(r"{cats}",'Cats'))这将仅替换匹配的部分,而不是整个字符串.我不知道该怎么做.一个Python实现也会有所帮助.

#output
┌─────────────┬─────────────┐
│ category    ┆ replaced    │
│ ---         ┆ ---         │
│ str         ┆ str         │
╞═════════════╪═════════════╡
│ Cats A      ┆ CATS A      │
│ Cats B      ┆ CATS B      │
│ kittens     ┆ CATS        │
│ street cats ┆ street cats │
│ dogs A      ┆ dogs A      │
│ dogs B      ┆ dogs B      │
└─────────────┴─────────────┘

推荐答案

我不知道R,但看起来第一个示例构建了一个由|分隔的正则表达式?

您可以用类似的方式在"正则表达式级别"执行此操作:

  • |个带分隔符的分词放在(?:)
  • (?i)表示忽略大小写
  • 在小数的两边使用.*"通配符"来匹配"任何"
df.with_columns(replaced =
   pl.col("category").str.replace(r"(?i).*(?:cats|kittens).*", "CATS")
)
shape: (6, 2)
┌─────────────┬──────────┐
│ category    ┆ replaced │
│ ---         ┆ ---      │
│ str         ┆ str      │
╞═════════════╪══════════╡
│ Cats A      ┆ CATS     │
│ Cats B      ┆ CATS     │
│ kittens     ┆ CATS     │
│ street cats ┆ CATS     │
│ dogs A      ┆ dogs A   │
│ dogs B      ┆ dogs B   │
└─────────────┴──────────┘

R相关问答推荐

通过绘图 Select 线串几何体并为其着色

如何删除多个.CSV文件的行

如何将在HW上运行的R中的消息(错误、警告等)作为批处理任务输出

从gtsummary包中使用tBL_strata()和tBL_summary()时删除变量标签

抖动点与嵌套类别变量箱形图的位置不对齐

随机森林回归:下拉列重要性

当两个图层映射到相同的美学时,隐藏一个图层的图例值

在另一个函数中调用ggplot2美学

如何在R中对深度嵌套的tibbles中的非空连续行求和?

根据元素和前一个值之间的差值过滤矩阵的元素

如何使用tryCatch执行语句并忽略警告?

使用`Watch()`和`renderUI()`时,不再满足仍出现在SHILINY AFTER条件中的条件输入

方法::slotName如何处理非类、非字符的参数?

提高圣彼得堡模拟的速度

防止在更新SHINY中的Reactive Value的部分内容时触发依赖事件

R中时间间隔的大向量与参考时间间隔的相交

Conditional documentr::R中数据帧的summarize()

如何在条形图中的x和填充变量中包含多个响应变量?

如何获取R chromote中的当前URL?

R:改进实现简单模型