簡體   English   中英

在R語言中嵌套for循環

[英]nested for-loop in R language

我有這個代碼,首先使用余弦相似度計算數據幀中的副本:首先循環(nrow)次,每次一條推文然后將余弦相似性結果與其他推文使用第二個循環的推文進行比較。

這是我的代碼:

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
}

我在第一個循環中遇到了問題,雖然在數據框10000個推文中發送了一定數量的推文,但輸入了一次。

我得到錯誤:

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

我還沒有代表把它放在評論中,但我認為你因為Tweet_cos矢量中的NA / NULL而遇到了這個問題。 調試從代碼中刪除此部分:

    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

print(cos_similarity$v1)替換整個print(cos_similarity$v1) 理想情況下,您應該看到一些NA / NULL,其中def無法與0.9進行比較,從而導致錯誤。

如果有太多的迭代/循環,那么嘗試打印你正在獲得錯誤的ib值,並僅為此打印cos_similarity$v1

請考慮共享小樣本數據,以便其他人可以復制您的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM