2016-05-13 10 views
1

Ich habe diesen Code zu berechnen doppelt in einem Datenrahmen mit Kosinus-Ähnlichkeit durch erstens: erste Schleife (nrow) mal in jedes Mal einen Tweet dann vergleicht die Cosinus-Ähnlichkeit Ergebnisse zu diesem Tweet mit andere Tweets mit der zweiten Schleife.verschachtelte For-Schleife in R-Sprache

Hier ist mein Code:

for (i in 1:nrow(temp)) { 
    dup=0 
    one_Tweets = tweets$Tweet[i] 
    cos_similarity = data.frame("v1"=NULL) # NULL So that don't write previous value 
    cos_similarity=data.frame(sim <- round(sim.strings(AllTweets,one_Tweets), digits = 3)) 
    names(cos_similarity) = c("v1") 

    for (b in i+1:nrow(temp)) { 
    Tweet_cos=cos_similarity$v1[b] 
    if (Tweet_cos >= 0.900) { 
     count = count+1 
     tweets$flag[b]= 1 
    }else { #if (Tweet_cos <0.900) { 
     tweets$flag[b]= 2 
    } 
    Tweet_cos=0 
    } 
    dup=tweets$duplicate[i]= tweets$duplicate[i]+count 
    count = 0 
} 

ich ein Problem in der ersten Schleife haben, trat eine Zeit, obwohl die Anzahl von Tweets in Datenrahmen 10000 Tweets.

und ich bekomme die Fehlermeldung:

Error in if (Tweet_cos >= 0.9) { : missing value where TRUE/FALSE needed 
+1

Versuch 'Zusammenfassung (temp) replizieren', um zu sehen, ob Sie 'NA' Werte im Tweet_cos – Bulat

+0

in Umwelt Tweet_cos Wert = NA_real_, nach dem Gebrauch Zusammenfassung (temp) ich sehe Werte – user3588494

+0

siehe Ergebnis: 'Zusammenfassung (Tweet_cos) min. 1. Qu. Mittlerer Mittelwert 3rd Qu. Max. NA's NA NA NA NaN NA NA ' – user3588494

Antwort

0

ich nicht noch habe rep es in Kommentar zu setzen, aber ich glaube, Sie dieses Problem zu bekommen, weil die NA/NULL in Tweet_cos Vektor. diesen Teil von Code zu debuggen entfernen:

for (b in i+1:nrow(temp)) { 
    Tweet_cos=cos_similarity$v1[b] 
    if (Tweet_cos >= 0.900) { 
     count = count+1 
     tweets$flag[b]= 1 
    }else { #if (Tweet_cos <0.900) { 
     tweets$flag[b]= 2 
    } 
    Tweet_cos=0 
    } 
    dup=tweets$duplicate[i]= tweets$duplicate[i]+count 
    count = 0 

ganzes dies mit print(cos_similarity$v1) ersetzen. Sie sollten idealerweise einige NA/NULL sehen, die per def nicht mit 0.9 und damit dem Fehler verglichen werden können.

Wenn es zu viele Iterationen/Schleife gibt, dann versuchen Sie, die Werte i und b zu drucken, wo Sie Fehler erhalten und cos_similarity$v1 nur dafür drucken.

Bitte beachten Sie kleine Beispieldaten teilen, damit andere Ihr Problem

+0

ich entferne diesen Teil und drucke cos_simility $ V1 .. Ergebnis: '[2205] 0.489 0.615 0.699 0.649 0.616 0.757 0.603 0.666 0.669 0.616 0.716 0.658 0.649 0.682 0.740 0.578 0.696 0.661 0.719 [2224] 0.737 0.734 0.631 0.724 0.721 0.690 0.544 0.645 0.617 0.618 0.586 0.600 0.539 0.594 0.716 0.637 0.674 0.699 0.582 ' – user3588494