字符"|" 在strsplit功能(垂直条/管)

Dd *_* Pp 4 r

我很好奇:

> strsplit("ty,rr", split = ",")  
[[1]]
[1] "ty" "rr"

> strsplit("ty|rr", split = "|")
[[1]]
[1] "t" "y" "|" "r" "r"
Run Code Online (Sandbox Code Playgroud)

我为什么不c("ty","rr")来自strsplit("ty|rr", split="|")

And*_*rie 13

这是因为split参数被解释为正则表达式,并且|是正则表达式中的特殊字符.

为了解决这个问题,您有两种选择:

选项1:逃避|,即split = "\\|"

strsplit("ty|rr", split = "\\|")
[[1]]
[1] "ty" "rr"
Run Code Online (Sandbox Code Playgroud)

选项2:指定fixed = TRUE:

strsplit("ty|rr", split = "|", fixed = TRUE)
[[1]]
[1] "ty" "rr"
Run Code Online (Sandbox Code Playgroud)

请注意参见章节?strsplit,其中告诉您阅读?"regular expression"有关模式规范的详细信息.