替换单独的字符或用逗号分隔的字符
Substituting lone characters or chars separated by comma
我有以下数据,希望仅替换单个字符。
A,Apple
A
我想生成这样的输出
Banana,Apple
Banana
换句话说,我想用香蕉代替任何有 A 或 A 的东西。但是,如果出现另一个以 A 开头的单词,我想忽略它。
我试过了
gsub("A", "Banana"),
gsub("A[^,;]","Banana"),
但这对第一个例子不起作用,我得到的输出是
Banana,Bpple
关于如何实现此目标的任何想法?
谢谢!
如果值总是被标点或行包围 start/end:
text = "A,Apple\nA\nAvocado"
text2 = gsub("(\b)A(\b)", "\1Bananna\2", text, TRUE, TRUE)
cat(text2)
这会捕获 "A" 周围的标点符号(如果存在),然后使用反向引用 </code> 和 <code>
将它们放回去。使用 PCRE 因此我们可以使用 \b
字边界匹配。
输出:
Bananna,Apple
Bananna
Avocado
非正则表达式的解决方案可能是将字符串拆分为逗号 (,
),如果等于 "A"
,则将值更改为 "Banana"
sapply(strsplit(x, ","), function(x) toString(ifelse(x == "A","banana", x)))
#[1] "banana, Apple" "banana"
数据
x <- c("A,Apple", "A")
我有以下数据,希望仅替换单个字符。
A,Apple
A
我想生成这样的输出
Banana,Apple
Banana
换句话说,我想用香蕉代替任何有 A 或 A 的东西。但是,如果出现另一个以 A 开头的单词,我想忽略它。
我试过了
gsub("A", "Banana"),
gsub("A[^,;]","Banana"),
但这对第一个例子不起作用,我得到的输出是
Banana,Bpple
关于如何实现此目标的任何想法? 谢谢!
如果值总是被标点或行包围 start/end:
text = "A,Apple\nA\nAvocado"
text2 = gsub("(\b)A(\b)", "\1Bananna\2", text, TRUE, TRUE)
cat(text2)
这会捕获 "A" 周围的标点符号(如果存在),然后使用反向引用 </code> 和 <code>
将它们放回去。使用 PCRE 因此我们可以使用 \b
字边界匹配。
输出:
Bananna,Apple
Bananna
Avocado
非正则表达式的解决方案可能是将字符串拆分为逗号 (,
),如果等于 "A"
sapply(strsplit(x, ","), function(x) toString(ifelse(x == "A","banana", x)))
#[1] "banana, Apple" "banana"
数据
x <- c("A,Apple", "A")