Por que strsplit (“A, B. C”, c (“,”, “.”)) Não remove “. ”?
Estou claramente interpretando mal a documentação, então farei isso rápido. É meu entendimento que strsplit("A, B . C",c(", ",". "))deve pesquisar "A, B. C" para todas as ocorrências de "," e strsplit como se eu tivesse executado strsplit("A, B . C",", ")e então deve pegar a saída disso, ainda em forma de string, e strsplit como se Eu tinha corrido strsplit([tidied output],". "). Em outras palavras, minha saída esperada seria list(c("A","B ","C")).
Quando eu realmente executo este código, obtenho o seguinte resultado, mostrando que o "." Não foi removido. O que deu errado?
> strsplit("A, B . C",c(", ",". "))
[[1]]
[1] "A" "B . C"
Parece não ser um problema de regex. Por exemplo, a configuração fixed=TRUEdeve desabilitar a correspondência de regex, mas não altera minha saída:
> strsplit("A, B . C",c(", ",". "),fixed = TRUE)
[[1]]
[1] "A" "B . C"
Respostas
Quando um vetor splitnão funciona exatamente assim, consulte f.ex
strsplit(c("A, B . C", "A, B . C"), c(", ", ". "), fixed=TRUE )
# [[1]]
# [1] "A" "B . C"
# [[2]]
# [1] "A, B " "C"
É um ciclo contínuo x. Se xtiver comprimento um, apenas o primeiro splitserá usado.
A maneira mais fácil de adicionar mais argumentos splité, descobri, tratá-lo apenas como regex regular, por exemplo
strsplit("A, B . C", "[.,] " )
# [[1]]
# [1] "A" "B " "C"