如何在“|”的分隔符处得到正确的结果?

时间:2014-02-18 11:38:12

标签: regex r

我想拆分一个字符串。

str <- "3 |6 | 9 | 12" 
unlist(strsplit(str,split="|")) 
[1] "3" " " "|" "6" " " "|" " " "9" " " "|" " " "1" "2"

如何获得结果“3 6 9 12”?

3 个答案:

答案 0 :(得分:2)

我实际上会放弃strsplit而只是使用scan这样的事情......

> str <- "3 |6 | 9 | 12" 
> str
[1] "3 |6 | 9 | 12"
> scan(text = str, sep = "|")
Read 4 items
[1]  3  6  9 12

答案 1 :(得分:1)

如果你想要一个包含所有四个子串的向量,你可以使用:

str <- "3 |6 | 9 | 12" 

strsplit(str, " *\\| *")[[1]]
# [1] "3"  "6"  "9"  "12"

此处," *"表示任意数量的空格

请注意,|表示正则表达式中的。你必须使用双重转义来进行文字解释,即\\|

答案 2 :(得分:0)

使用gsub替换'|'通过“空”。 (使用“fixed = TRUE”,因此“|”是要按原样匹配的字符串,而不是regexp中使用的“|”

str <- "3 |6 | 9 | 12" 
> gsub("|", "", str, fixed = TRUE)
[1] "3 6  9  12"