【问题标题】:strsplit with vertical bar (pipe)strsplit 与竖线(管道)
【发布时间】:2023-04-05 07:10:02
【问题描述】:

这里,

> r<-c("AAandBB", "BBandCC")
> strsplit(as.character(r),'and')
[[1]]
[1] "AA" "BB"

[[2]]
[1] "BB" "CC"

效果很好,但是

> r<-c("AA|andBB", "BB|andCC")
> strsplit(as.character(r),'|and')
[[1]]
[1] "A" "A" "|" ""  "B" "B"

[[2]]
[1] "B" "B" "|" ""  "C" "C"

在这里,答案是不正确的。当我使用“|and”时,如何获得“AA”和“BB”?
提前致谢。

【问题讨论】:

  • strsplit 函数中不需要使用 as.character()。 :)
  • character "|" in R的可能重复
  • @RockScience: 不错的建议:)
  • 发现这个问题是因为我尝试在"\|" 上拆分,导致错误'\|' is an unrecognized escape...。如@RockScience 所示,我只需要添加第二个反斜杠"\\|"。谢谢!!

标签: string r split strsplit


【解决方案1】:

正如您在 ?strsplit 中所读到的,函数 strsplit 中的参数 split 是 regular expression。因此,要么您需要转义竖线(它是一个特殊字符)

strsplit(r,split='\\|and')

或者你可以选择fixed=TRUE表示split不是正则表达式

strsplit(r,split='|and',fixed=TRUE)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 2022-01-08
    • 2021-10-15
    • 2012-01-31
    • 2014-01-30
    相关资源
    最近更新 更多