0

我希望将字符串拆分为向量和列表。如果有一个OR或一个||我想拆分成列表。如果有AND or&& split into a vector. With the word version I get it but not with the use of| and&`. 这是代码:

splitting <- function(x) {
    lapply(strsplit(x, "OR|[\\|\\|]"), function(y){
       strsplit(y, "AND|[\\&\\&]")
    })
}

splitting("3AND4AND5OR4OR6AND7") ## desired outcome for all three
splitting("3&&4&&5||4||6&&7")
splitting("3&&4&&5OR4||6&&7")

这是期望的结果:

> splitting("3AND4AND5OR4OR6AND7")
[[1]]
[[1]][[1]]
[1] "3" "4" "5"

[[1]][[2]]
[1] "4"

[[1]][[3]]
[1] "6" "7"

如何正确设置此正则表达式?我在做什么不正确?

4

1 回答 1

1

我并不是说这是最好的答案,但是如果您已经使用“AND”和“OR”解决了问题,那么为什么不将其简化为您已经解决的问题呢?

splitting <- function(x) {
  x <- gsub("&&", "AND", x, fixed = TRUE)
  x <- gsub("||", "OR", x, fixed = TRUE)

  lapply(strsplit(x, "OR|[\\|\\|]"), function(y){
    strsplit(y, "AND|[\\&\\&]")
  })
}

splitting("3AND4AND5OR4OR6AND7") ## desired outcome for all three
splitting("3&&4&&5||4||6&&7")
splitting("3&&4&&5OR4||6&&7")

这只是突然出现在我脑海中的第一件事,我还没有真正考虑过是否有更好的方法来做到这一点。

这似乎也有效

splitting <- function(x) {
  #x <- gsub("&&", "AND", x, fixed = T)
  #x <- gsub("||", "OR", x, fixed = T)

  lapply(strsplit(x, "OR|\\|\\|"), function(y){
    strsplit(y, "AND|\\&\\&")
  })
}
于 2013-09-29T04:55:30.507 回答