Я пишу функцию с for l oop, которая продолжает возвращать ошибку «in cos_sim [a, document]: нижний индекс вне границ» при запуске »all.gloveterms (merged [, 4], merged [, 3]) ".
Примером первого элемента объединенного [, 4] является" угловая скобка ", а объединенного [, 3] -" Simpson Strong-T ie 12-Gauge Angle "
Это мой код:
all.gloveterms <- function (queries, docs)
{
n <- length(queries)
m <- length(docs)
queryscores <- c(0)
scores <- c(0)
for(i in 1:n){
query <- removePunctuation(queries[i])
querywords <- unique(tolower(query))
a <- intersect(querywords, dimnames(cos_sim)[[1]])
p <- length(querywords)
for(j in 1:m){
document <- removePunctuation(docs[j])
docwords <- unique(tolower(document))
maxval <- max(cos_sim[a, document])
queryscores <- append(queryscores, unlist(maxval))
print(a)
print(document)
#cannot seem to get these print statements to work inside the for-loop either..
scores <- append(scores, max(unlist(queryscores)))
assign("querywords", NULL, envir = .GlobalEnv)
flush.console()
}
}
y <- as.integer(0)
score <- sum(unlist(scores))/n
feature[i] <- if (length(score)) score else y
}
С сегодняшнего утра я пробовал множество различных решений. Я подумал, что одно из слов, которые я использую в своей функции косинуса, может отсутствовать в моем списке слов cos_sim, но я считаю, что функция пересечения, образующая «a», решает эту проблему.
Тогда я подумал, что, может быть, я не понимал, как работают входные «запросы» и «документы», и я попытался разбить вход [i] на разные строки, но это тоже не решило проблему, поэтому я удалил его из своего кода.
Я застрял в этой проблеме в течение последних нескольких дней, и мне очень трудно понять, что я делаю не так.
Сообщите мне, есть ли еще какие-то данные, которые вам нужны, чтобы помочь мне вне! :)