Необычное логическое несоответствие наблюдается в моем коде R - PullRequest
0 голосов
/ 21 декабря 2018

что-то, что нужно изучить / запомнить.

Нужны советы, чтобы избежать подобных ошибок.

При написании большого (ish) R кода просмотрите множество файлов данных и создайтерезюме данных, которое я хотел использовать:

File_data$name[p] %in% nr_counter$NAME

Это должно в основном проверять, принадлежит ли символ (имя) в File_data$name[p] столбцу NAME nr_counter.Но, к моему удивлению, команда не может решить это.Я не могу понять почему.Единственный вывод, который я получил, состоит в том, что тест:

File_data$name[p] == "Bohuslav Diviš"

возвращает FALSE, когда он должен быть ИСТИНА (текст «Богуслав Дивиш»).

Вот дополнительные выводы кода, которые язагрузка этого теста типа объектов и некоторых логических несоответствий из моей консоли

> File_data$name[p] %in% nr_counter$NAME
[1] FALSE
> File_data$name[p]
[1] "Bohuslav Diviš"
> nr_counter$NAME
[1] "qwert"          "Bohuslav Diviš"
> nr_counter$NAME[2]
[1] "Bohuslav Diviš"
> File_data$name[p] == nr_counter$NAME[2]
[1] FALSE
> "Bohuslav Diviš" %in% nr_counter$NAME
[1] TRUE
> "Bohuslav Diviš" == File_data$name[p]
[1] FALSE
> File_data$name[p] == "Bohuslav Diviš"
[1] FALSE
> typeof(File_data$name[p])
[1] "character"
> typeof(nr_counter)
[1] "list"
> typeof(nr_counter$NAME)
[1] "character"
> nr_counter
            NAME        COUNTRY COUNTER
1          qwert          asdfg       1
2 Bohuslav Diviš Czechoslovakia       1
> as.character(File_data$name[p]) %in% as.character(nr_counter$NAME)
[1] FALSE

Может ли это быть проблемой из-за специальной буквы 'š' в имени?

Я так думаю,Основываясь на следующих изменениях, которые я сделал:

> File_data$name[p] = "Bohuslav Divis"
> nr_counter$NAME[2] = "Bohuslav Divis"
File_data$name[p] %in% nr_counter$NAME
[1] TRUE

Я подумал, что если я вернусь к имени с помощью 'š', то этот логический тест должен выйти как FALSE, если одна специальная буква вызывает проблему.Вот результат:

> nr_counter$NAME[2] = "Bohuslav Diviš"
> File_data$name[p] = "Bohuslav Diviš"
> File_data$name[p] %in% nr_counter$NAME
[1] TRUE

Как видно выше, FALSE не был получен.Таким образом, теперь я запутался в том, как выполнить тест в моем коде, работающем с большим количеством данных.

Спасибо за терпение, надеюсь, это наблюдение задело ваши творческие центры.

Приветствия ...

...