首页 > 解决方案 > 用另一个字符串替换R中数据帧的每一行的子字符串

问题描述

我有一个数据框,对于每一行,我想用 B 列中的值替换 A 列中的常规参数。

我可以用循环来做到这一点,但我不知道如何用 lapply 更快地做到这一点。

column A            column B
hotels in {d}       London
{d} city breaks     Bangkok
cheap hotels {d}    New York

我希望结果是:

Column A
hotels in London
Bangkok city breaks
cheap hotels New York

我可以用这样的循环来做到这一点:

for (i in 1:nrow(df){
  df$Column A[i] <- gsub("\\{d\\}",df$Column B[i], dfColumn A[i])
}

但是对于数百万行,这会很慢..

标签: rlapplygsub

解决方案


您可以在一行中完成它stringr,它是矢量化的......

library(stringr)
df$columnA <- str_replace(df$columnA, "\\{d\\}", df$columnB)

df
                columnA  columnB
1      hotels in London   London
2   Bangkok city breaks  Bangkok
3 cheap hotels New York New York

推荐阅读