3

私はテキストを持っています。

text<- "i am happy today :):)"

テキストベクトルから:)を抽出し、その頻度を報告したい

4

3 に答える 3

5

一般化が容易な 1 つのアイデアを次に示します。

text<- c("i was happy yesterday :):)",
         "i am happy today :)",
         "will i be happy tomorrow?")

(nchar(text) - nchar(gsub(":)", "", text))) / 2
# [1] 2 1 0
于 2012-04-11T07:44:45.737 に答える
3

カウントだけが必要だと思いますか、それとも:)文字列から削除したいですか?

あなたができるカウントのために:

length(gregexpr(":)",text)[[1]])

これにより 2 が得られます。文字列のベクトルのより一般的な解は次のとおりです。

sapply(gregexpr(":)",text),length)

編集:

:)Josh O'Brien さんは、この場合も there is no sinceの 1 をgregexpr返すと指摘しました-1。これを修正するには、次を使用できます。

sapply(gregexpr(":)",text),function(x)sum(x>0))

これは少しきれいではありません。

于 2012-04-11T07:50:58.317 に答える
1

これはうまくいきますが、最も直接的な方法ではないかもしれません:

mytext<- "i am happy today :):)"

# The following line inserts semicolons to split on
myTextSub<-gsub(":)", ";:);", mytext)

# Then split and unlist
myTextSplit <- unlist(strsplit(myTextSub, ";"))

# Then see how many times the smiley turns up
length(grep(":)", myTextSplit))

編集

長さが 1 より大きいテキストのベクトルを処理するには、リストから除外しないでください。

mytext<- rep("i am happy today :):)",2)
myTextSub<-gsub(":\\)", ";:\\);", mytext)
myTextSplit <- strsplit(myTextSub, ";")

sapply(myTextSplit,function(x){
  length(grep(":)", x))
})

しかし、私は他の答えが好きです。

于 2012-04-11T07:43:03.163 に答える