在R语言中嵌套for循环

时间:2016-05-13 02:48:30

标签: r twitter sentiment-analysis

我有这个代码,首先使用余弦相似度计算数据帧中的副本:首先循环(nrow)次,每次一条推文然后将余弦相似度结果与其他推文使用第二个循环的推文进行比较。 / p>

这是我的代码:

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

1 个答案:

答案 0 :(得分:0)

我还没有代表把它放在评论中,但我认为你是因为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)替换整个内容。理想情况下,您应该看到一些NA / NULL,其中def无法与0.9进行比较,从而导致错误。

如果迭代/循环过多,则尝试打印ib的值,以获取错误并仅打印cos_similarity$v1

请考虑共享小样本数据,以便其他人可以复制您的问题