Come usare la funzione strsplit con un punto

Mi piacerebbe dividere la stringa seguente per i suoi periodi. Ho provato strsplit() con "." nell’argomento split , ma non ha ottenuto il risultato che voglio.

 s <- "I.want.to.split" strsplit(s, ".") [[1]] [1] "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" 

L’output che voglio è dividere s in 4 elementi in una lista, come segue.

 [[1]] [1] "I" "want" "to" "split" 

Cosa dovrei fare?

Quando usi un’espressione regolare nell’argomento split di strsplit() , devi sfuggire al . con \\. , o usare una charclass [.] . Altrimenti usi . come il suo carattere speciale che significa “qualsiasi singolo carattere”.

 s <- "I.want.to.split" strsplit(s, "[.]") # [[1]] # [1] "I" "want" "to" "split" 

Ma il metodo più efficiente qui è quello di usare l'argomento fixed in strsplit() . L'utilizzo di questo argomento bypasserà il motore regex e cercherà una corrispondenza esatta di "." .

 strsplit(s, ".", fixed = TRUE) # [[1]] # [1] "I" "want" "to" "split" 

E, naturalmente, puoi vedere help(strsplit) per ulteriori informazioni.

È necessario posizionare il punto . all’interno di una class di caratteri o precederla con due barre rovesciate per sfuggirla poiché il punto è un carattere di significato speciale nella regex che significa “corrisponde a un singolo carattere (eccetto newline)”

 s <- 'I.want.to.split' strsplit(s, '\\.') # [[1]] # [1] "I" "want" "to" "split" 

Oltre a strsplit() , puoi anche usare scan() . Provare:

 scan(what = "", text = s, sep = ".") # Read 4 items # [1] "I" "want" "to" "split"