Perché strsplit ("A, B. C", c (",", ".")) Non rimuove ". "?
Sto chiaramente fraintendendo la documentazione, quindi lo farò velocemente. È mia comprensione che strsplit("A, B . C",c(", ",". "))dovrebbe cercare "A, B. C" per tutte le occorrenze di "," e strsplit come se avessi eseguito strsplit("A, B . C",", ")e quindi dovrebbe prendere l'output di quello, sempre in forma di stringa, e strsplit come se avevo corse strsplit([tidied output],". "). In altre parole, il mio output previsto sarebbe list(c("A","B ","C")).
Quando eseguo effettivamente questo codice, ottengo il seguente risultato, che mostra che "." Non è stato rimosso. Cosa è andato storto?
> strsplit("A, B . C",c(", ",". "))
[[1]]
[1] "A" "B . C"
Sembra non essere un problema di regex. Ad esempio, l'impostazione fixed=TRUEdovrebbe disabilitare la corrispondenza delle espressioni regolari, ma non cambia il mio output:
> strsplit("A, B . C",c(", ",". "),fixed = TRUE)
[[1]]
[1] "A" "B . C"
Risposte
Quando viene dato un vettore splitnon funziona proprio così, vedi f.ex
strsplit(c("A, B . C", "A, B . C"), c(", ", ". "), fixed=TRUE )
# [[1]]
# [1] "A" "B . C"
# [[2]]
# [1] "A, B " "C"
È pedalato x. Se xè di lunghezza uno, splitverrà utilizzato solo il primo di .
Il modo più semplice per aggiungere più argomenti splitè, ho scoperto, trattarlo come una normale regex, ad es
strsplit("A, B . C", "[.,] " )
# [[1]]
# [1] "A" "B " "C"