我有一个完整的字符串向量,其中唯一的特殊符号是“ - ”
要明确示例字符串类似于23 C-Exam
我想改变23-C考试
我基本上希望R找到“ - ”的位置并将其移回2个空格。
我觉得这是一项非常简单的任务,虽然我无法弄清楚如何。
假设每当R找到“ - ”时,两个空格就是空格,就像上面的例子一样。
答案 0 :(得分:3)
regex
尝试:
x <- c("23 C-Exam","45 D-Exam")
#[1] "23 C-Exam" "45 D-Exam"
sub(".(.)-", "-\\1 ", x)
#[1] "23-C Exam" "45-D Exam"
在字符.
之前找到字符(.)
,然后在文字短划线-
之后找到。
替换为文字短划线-
,来自\\1
上方的已保存字符,并使用空格
答案 1 :(得分:2)
使用正则表达式可能有一种流畅的方式,但一种方法是简单地将所需输出的各个部分拼接在一起。首先,我在包含-
的字符串中找到索引,然后使用substr()
将输出拼凑在一起。
pos <- regexpr("-", "23 C-Exam")
x <- "23 C-Exam"
x <- paste0(substr(x, 1, pos-3),
"-",
substr(x, pos-1, pos-1),
" ",
substr(x, pos+1, nchar(x)))
> x
[1] "23-C Exam"
答案 2 :(得分:1)
我们也可以使用chartr
chartr(" -", "- ", x)
#[1] "23-C Exam" "45-D Exam"
x <- c("23 C-Exam","45 D-Exam")