Как исправить NameError: имя 'phrasedocs' не определено

Продолжение вкладов Брандона Бертельсена в Rcpp. Для меня версия NumericVector не работала: она заменила только первое NA. Это связано с тем, что вектор ina оценивается только один раз в начале функции.

Вместо этого можно использовать тот же подход, что и для функции IntegerVector. Для меня работали следующие:

library(Rcpp)
cppFunction('NumericVector na_locf_numeric(NumericVector x) {
  R_xlen_t n = x.size();
  for(R_xlen_t i = 0; i<n; i++) {
    if(i > 0 && !R_finite(x[i]) && R_finite(x[i-1])) {
      x[i] = x[i-1];
    }
  }
  return x;
}')

Если вам нужна версия CharacterVector, то работает тот же базовый подход:

cppFunction('CharacterVector na_locf_character(CharacterVector x) {
  R_xlen_t n = x.size();
  for(R_xlen_t i = 0; i<n; i++) {
    if(i > 0 && x[i] == NA_STRING && x[i-1] != NA_STRING) {
      x[i] = x[i-1];
    }
  }
  return x;
}')
0
задан Jack Harris 31 March 2019 в 00:34
поделиться

2 ответа

Просто вы определили «phrasedocs» внутри функции, которая не видна снаружи, и возвращение функции должно быть зафиксировано в переменной, отредактируйте ваш код:

dirPath = 'C:/Users/J/kagglemoviereviews/corpus'
phrasedata = processkaggle(dirPath, 5000) # returns 'phrasedata'
phraselist = random_phrase(phrasedata) # returns 'phraselist'
phrasedocs = word_token(phraselist) # returns 'phrasedocs'
phrasedocs2 = process_token(phrasedocs) # returns phrasedocs2
0
ответ дан Mahmoud Elshahat 31 March 2019 в 00:34
поделиться

Вы только создали переменную phrasedocs в функции. Поэтому переменная не определена для всего вашего другого кода за пределами этой функции. Когда вы вызываете переменную в качестве входных данных для функции, python не может найти переменную с таким именем. Вы должны создать переменную phrasedocs в своем основном коде.

0
ответ дан SeanSdahl 31 March 2019 в 00:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: