2016-04-14 11 views
0

Rを使用してツイートを抽出し、その感情を分析しますが、下の行に着くと「オブジェクトのタイプ 'クロージャー'はサブセット化できません」というエラーが表示されます誰もが理由として、私はそれがはるかに理解されるであろう、このエラーを取得していて助けることができれば'closure'タイプのオブジェクトはサブセット化不可能です - R

scores$drink = factor(rep(c("east"), nd)) 
scores$very.pos = as.numeric(scores$score >= 2) 
scores$very.neg = as.numeric(scores$score <= -2) 

完全なコードは

load("twitCred.Rdata") 
east_tweets <- filterStream("tweetselnd.json", locations = c(-0.10444, 51.408699, 0.33403, 51.64661),timeout = 120, oauth = twitCred) 
tweets.df <- parseTweets("tweetselnd.json", verbose = FALSE) 

##function score.sentiment 

score.sentiment = function(sentences, pos.words, neg.words, .progress='none') 
{ 
    # Parameters 
    # sentences: vector of text to score 
    # pos.words: vector of words of postive sentiment 
    # neg.words: vector of words of negative sentiment 
    # .progress: passed to laply() to control of progress bar 

    scores = laply(sentences, 
       function(sentence, pos.words, neg.words) 
       { 
        # remove punctuation 
        sentence = gsub("[[:punct:]]", "", sentence) 
        # remove control characters 
        sentence = gsub("[[:cntrl:]]", "", sentence) 
        # remove digits? 
        sentence = gsub('\\d+', '', sentence) 

        # define error handling function when trying tolower 
        tryTolower = function(x) 
        { 
        # create missing value 
        y = NA 
        # tryCatch error 
        try_error = tryCatch(tolower(x), error=function(e) e) 
        # if not an error 
        if (!inherits(try_error, "error")) 
         y = tolower(x) 
        # result 
        return(y) 
        } 
        # use tryTolower with sapply 
        sentence = sapply(sentence, tryTolower) 

        # split sentence into words with str_split (stringr package) 
        word.list = str_split(sentence, "\\s+") 
        words = unlist(word.list) 

        # compare words to the dictionaries of positive & negative terms 
        pos.matches = match(words, pos.words) 
        neg.matches = match(words, neg.words) 

        # get the position of the matched term or NA 
        # we just want a TRUE/FALSE 
        pos.matches = !is.na(pos.matches) 
        neg.matches = !is.na(neg.matches) 

        # final score 
        score = sum(pos.matches) - sum(neg.matches) 
        return(score) 
       }, pos.words, neg.words, .progress=.progress) 

    # data frame with scores for each sentence 
    scores.df = data.frame(text=sentences, score=scores) 
    return(scores.df) 
} 

pos = readLines(file.choose()) 
neg = readLines(file.choose()) 

east_text = sapply(east_tweets, function(x) x$getText()) 

scores = score.sentiment(tweetseldn.json, pos, neg, .progress='text') 

scores()$drink = factor(rep(c("east"), nd)) 
scores()$very.pos = as.numeric(scores()$score >= 2) 
scores$very.neg = as.numeric(scores$score <= -2) 

# how many very positives and very negatives 
numpos = sum(scores$very.pos) 
numneg = sum(scores$very.neg) 

# global score 
global_score = round(100 * numpos/(numpos + numneg)) 

の下に貼り付けました。また、私はscore()$のような変数 'score'を参照するときに '()'を追加することについて他の回答を見ましたが、それは私のために働いていません。ありがとうございました。以下のエラーを処分した

+0

、それはから来ていますどこ我々が推測できるチャンスがあります。そうでない場合は、おそらくhttp://stackoverflow.com/q/11308367 – Frank

+0

を参照してください。FULL ERROR:スコアのエラー$ drink = factor(rep(c( "east")、nd)): 'closure'タイプのオブジェクトはサブセット可能 –

+1

私は同じことを考えましたが、試してみると次のエラーが表示されます:スコア()$ drink = factor(rep(c( "east_text")、nd)): 割り当ての左側が無効 –

答えて

0

変更:あなたは完全な誤りを投稿する場合

x <- scores 
x$drink = factor(rep(c("east"), nd)) 
x$very.pos = as.numeric(x$score >= 2) 
x$very.neg = as.numeric(x$score <= -2) 
関連する問題