为什么这个gsub不能在R中工作

时间:2016-11-20 05:03:24

标签: r regex gsub

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

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

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

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

2 个答案:

答案 0 :(得分:1)

如果我们正在处理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))

答案 1 :(得分:0)

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

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

如果因素太多,您还可以将因子转换为字符,然后使用gsub

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

确保已加载gsub函数库。