6

指定された文字までのすべての文字をどのように抽出しますか? 例として、「。」の前のすべてを抽出したいと思います。(限目):

a<-c("asdasd.sss","segssddfge.sss","se.sss")

戻りたい:

asdasd segssddfge se

私は試した:

substr(a,1,".")

しかし、うまくいかないようです。

何か案は?

4

3 に答える 3

7

非常に基本的なアプローチは次のとおりです。

sapply(strsplit(a, "\\."), `[[`, 1)
# [1] "asdasd"     "segssddfge" "se"

そしてもう一つ:

sub(".sss", "", a, fixed = TRUE)
# [1] "asdasd"     "segssddfge" "se" 
## OR sub("(.*)\\..*", "\\1", a) 
## And possibly other variations
于 2013-02-09T16:43:21.657 に答える
4

使用sub:

# match a "." (escape with "\" to search for "." as a normal "." 
# means "any character") followed by 0 to any amount of characters
# until the end of the string and replace with nothing ("")
sub("\\..*$", "", a)

subtrandを使用しgregexprます (1 つしかなく.、ベクトル内のすべての文字列に明確な一致があると仮定します)。

# get the match position of a "." for every string in "a" (returns a list)
# unlist it and get the substring of each from 1 to match.position - 1
substr(a, 1, unlist(gregexpr("\\.", a)) - 1)
于 2013-02-09T16:45:17.783 に答える
2

ここで使用する試みgsub

gsub(pattern='(.*)[.](.*)','\\1', c("asdasd.sss","segssddfge.sss","se.sss"))
[1] "asdasd"     "segssddfge" "se"        
于 2013-02-09T17:00:33.093 に答える