为什么这个 gsub 在 R 中不起作用

Why is this gsub not working in R

我想用单词 Joburg 替换以 Jo 开头的每个单词,但是这段代码不起作用,我不明白为什么。

gsub("^Jo\w+","Joburg",DF[,4:9])

我的数据框有 10 列,我希望在第 4 到 9 列中进行替换,所有这些都是因子。

当我 运行 unique() 之后我仍然得到以 Jo 开头的不同单词的原始列表,而不是整个单词 Joburg。

如果我们正在处理 data.frame,则遍历列并应用 gsub

DF[4:9] <- lapply(DF[4:9], function(x) gsub("^Jo\w+","Joburg",x))

这也可以通过 sub 而无需匿名函数调用来完成

DF[4:9] <- lapply(DF[4:9], sub, pattern = "^Jo\w+", replacement = "Joburg")

数据

set.seed(24)
DF <- as.data.frame(matrix(sample(c("Joan", "abf", "Jedi", "acf"), 9*4,
                       replace=TRUE), ncol=9))

如果您只想替换一栏的内容,您可以执行以下操作:

data$colname <- gsub ("^Jo\w+","Joburg", data$colname)

如果因数太多,也可以将因数转为字符,然后使用gsub

data$column_name <- as.character(data$column_name)

确保已加载 gsub 函数的库。