2014-04-21 30 views
6

這裏,strsplit用豎線(管道)

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

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

運作良好,但

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

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

此處,答案是不正確的。如何在使用'|和'時獲得「AA」和「BB」?
在此先感謝。

+2

有沒有必要在strsplit函數中使用as.character()。 :) – bartektartanus

+0

可能重複[character「|」在R](http://stackoverflow.com/questions/6382425/character-in-r) – RockScience

+0

@ RockScience:不錯的建議:) – ramesh

回答

20

正如你可以閱讀?strsplit,函數strsplit中的參數分割是regular expression。因此,無論你需要躲避豎線(這是一個特殊字符)

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

,或者你可以選擇固定= TRUE,表明分裂是不是一個正則表達式

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