2017-12-07 11 views
1

私は文字列の単語を見つけるためにRを使っているので、2つの列に分類できます。私はキーワードが存在するすべての行を見つけるためにgrepを使っていますが、キーワードが文字列に存在する場合は、別の列を値1で更新するループを書くのに問題があります。 Tweet.Textは文字列を含む列名、@ casekeenum7は探しているキーワード、Keenumはキーワードを含む各行に対して1の値で更新したい列です。Rのキーワードを含むツイートを見つけて更新する

コード:

for (i in 1:length(Tweet.Text)){ 
    if(grep('@casekeenum',Tweet.Text[i])){ 
    Keenum[i]==1 
    } 
} 

エラー:

Error in if (grep("@casekeenum7", Tweet.Text[i])) { : 
    argument is of length zero 
+0

'grep'は数値インデックスを返します。おそらく 'grepl'が必要ですが、' for'ループは必要ありません。つまり、as.integer(grepl( '@ casekeenum'、Tweet.Text)) 'はTRUEの値だけを変更する必要がある場合はバイナリ値を返します。 'Tweet.Text [grepl( '@ casekeenum'、Tweet.Text)] < - 1' – akrun

答えて

1

あなたはループのために必要はありません。

df = data.frame(Tweet.Text=c("Hello","@casekeenum"), 
       Keenum=c(0,0)) 


df$Keenum[grepl("@casekeenum",df$Tweet.Text)]=1 

リターン:

Tweet.Text Keenum 
1  Hello  0 
2 @casekeenum  1 
+0

ありがとう!それはうまくいった。 1質問に素早く追加してください。どうすれば2つのキーワードで確認できますか? @casekeenumと#casekeenum? –

+0

'|'演算子を使うことができます(または単に2行を作成することもできます)。例: 'df $ Keenum [grepl(" @ casekeenum | #casekeenum "、df $ Tweet.Text)] = 1' – Florian

関連する問題