【发布时间】:2015-04-01 20:32:36
【问题描述】:
我有一个字符串
vec = c('blue','red','flower','bee')
我想在一行中将不同的字符串转换成相同的字符串,而不是分开 即我可以 gsub blue 和 gsub red 使它们都拼写“颜色”。我怎样才能在一行中做到这一点?
输出应该是: '颜色','颜色','花','蜜蜂'
【问题讨论】:
我有一个字符串
vec = c('blue','red','flower','bee')
我想在一行中将不同的字符串转换成相同的字符串,而不是分开 即我可以 gsub blue 和 gsub red 使它们都拼写“颜色”。我怎样才能在一行中做到这一点?
输出应该是: '颜色','颜色','花','蜜蜂'
【问题讨论】:
sub("blue|red", "colour", vec)
使用“|” (这意味着您要替换的单词之间的逻辑OR 运算符)。
使用sub 仅更改第一次出现,使用gsub 更改同一字符串中的多次出现。
在 R 控制台中输入 ?gsub 以获取更多信息。
【讨论】:
sentence <- c("my favourite color is blue, red is what i dont like", "flowers are great") 看看sub 和gsub 之间的区别
这里不需要指定要替换的颜色,它将替换R知道的任何颜色(由colors()返回)
> col <- paste0(colors(), collapse = "|")
> gsub(col, "colour", vec)
[1] "colour" "colour" "flower" "bee"
另外,正如 cmets 中所建议的那样(显然只有当元素是颜色时才会起作用,所以 gsub 方法似乎更适合您的目的):
> vec[vec %in% colors()] <- "coulour"
> vec
[1] "coulour" "coulour" "flower" "bee"
【讨论】: