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)
替换全部。理想情况下,您应该看到一些 NA/NULL ,根据 def 无法与 0.9 进行比较,因此会出现错误。
如果 iterations/loop 太多,则尝试打印出现错误的 i
和 b
的值,并仅为此打印 cos_similarity$v1
。
请考虑共享小样本数据,以便其他人可以复制您的问题
我有这段代码通过首先使用余弦相似度来计算数据帧中的重复项:第一次循环(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)
替换全部。理想情况下,您应该看到一些 NA/NULL ,根据 def 无法与 0.9 进行比较,因此会出现错误。
如果 iterations/loop 太多,则尝试打印出现错误的 i
和 b
的值,并仅为此打印 cos_similarity$v1
。
请考虑共享小样本数据,以便其他人可以复制您的问题