2016-12-05 2 views
2

str_matchstringrから試してみました。これは簡単なテスト例で動作します。しかし、それはrtweetから戻って来て、そのデータ上では動作しません:rtweetのデータフレームのフィールドにstr_matchを使用

ここ

は、動作するようには思えない作らアップのデータフレームである:マッチを与え、フィルタリングしない

test <- data.frame(c(1), c('something')) 
names(test) <- c('value', 'item') 

subset(test, !anyNA(str_match(item,'thing'))) 

アイテムうち、生産:

value  item 
1  1 something 

何か他のものにそれを変更する:

subset(test, !anyNA(str_match(item,'thang'))) 

。予想通り、アイテムを..filters:バックrtweetからくるデータフレーム内

[1] value item 
<0 rows> (or 0-length row.names) 

しかし、「mentions_screen_name」フィールドは次のようにサブセット化することができるようには思えません。他のロジック操作(mentions_screen_name == ...など)は、列を選択するために機能します。しかし、フィールドの正確なテキストに一致する場合でも、!anyNA(str_match(mentions_screen_name, '...'))は機能しません。

str_matchで選択できないようなデータを送信したいと思います。しかし、データを取得するスクリプトはrtweetを使用しており、 はTwitterアプリケーションの認証情報が必要です。

私のような単純な例は、しかし、動作します。 rtweetのデータには何か違いはありますか?

+0

'str_match'は実際のマッチを抽出するために使われますが、' str_detect'を使うべきだと思います。パターンが文字列内にあれば論理的な結果を返します。そうすれば、一致するかどうかを知るために '!anyNA'を行う必要はありません。 –

+0

@MattMills 'str_detect(haystack、needle)'と '!anyNA(str_match(haystack、needle))'の結果が異なる場合はありますか?私はRのプログラマーではないが、このケースを個人的に見た(そしてStackOverflowに尋ねることを提案した)。とにかく、 'mentions_screen_name'フィールドをコピー/ペーストで取り出し、それを"干草 "として使うならば、それは独立した呼び出しで動作します。しかし、文字列のリテラル同値性テストが行​​われていたのに対して、 'サブセット'演算のロジックがそうでなかったので、何とかしようとしました。 : - /このような状況で誰かがやってくれるかもしれないどんな種類の健全性チェック? – HostileFork

答えて

1

現在、コメント、ハッシュタグなどのデータ構造は、各ツイートの値をコンマで区切られた単一の文字列に折り畳んで作成された文字ベクトルです。 rtweetの次のバージョンには、この構造体を少し簡単に扱えるようにするいくつかのユーティリティ関数が含まれています。その間に、コメントをリストオブジェクトに変換することができます:

strsplit(mentions, ",") 

または文字列内の一致を検索するためにgrep/greplのような関数を使用することができます。

私はこれがあなたの質問に答えているとは確信していません。私があなたに誤解した場合、私は残念です。

+0

ありがとうございました! –

関連する問題