2014-04-21 13 views
6

Qui,strsplit con barra verticale (tubo)

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

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

Lavorare bene, ma

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

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

Qui, la risposta non è corretta. Come ottenere "AA" e "BB", quando uso '| e'?
Grazie in anticipo.

+2

non v'è alcuna necessità di usa as.character() nella funzione strsplit. :) – bartektartanus

+0

possibile duplicato di [carattere "|" in R] (http://stackoverflow.com/questions/6382425/character-in-r) – RockScience

+0

@RockScience: bel suggerimento :) – ramesh

risposta

20

Come puoi leggere su? Strsplit, l'argomento suddiviso in funzione strsplit è un regular expression. Quindi o si ha bisogno di sfuggire alla barra verticale (si tratta di un carattere speciale)

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

oppure si può scegliere fisso = TRUE per indicare che Spalato non è un'espressione regolare

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