Фильтрация таблицы данных дает неожиданные результаты

#r #data.table

Вопрос:

Я пытаюсь отфильтровать таблицу данных, и, по-видимому, два эквивалентных метода дают разные результаты. К сожалению, я не могу поделиться данными, и я также не могу воспроизвести свою проблему с помощью простого примера. Ниже я приведу код для каждого из методов. В первом методе мы выбираем элемент из вектора для фильтрации данных. В результате получается непустая таблица данных. Однако, когда я сохраняю первый элемент этого вектора в отдельном фильтре и пытаюсь отфильтровать его с помощью этой переменной, в результате получается пустая таблица. В чем может быть причина? Предоставленный код в точности совпадает с кодом, который я выполнил.

 # Method 1  dataSet[FieldLabel == stringVector[1]] # stringVector[1] is something like "XDE 01.1 - YYYY QX BBBB  Probability (incl. XXX) - changed.xlsm"  # Method 2  template lt;- stringVector[1] dataSet[FieldLabel == template]  

Комментарии:

1. Является stringVector ли вектор символов? Что str(stringVector) возвращается?

2. У вас случайно нет колонки с именем template в dataSet ?

3. Если да, рассмотрите dataSet[FieldLabel == get("template", parent.frame())] или setkey(dataSet, FieldLabel) ; dataSet[template]

4. @Aurele, никаких 'templates' %in% names(dataSet) выходов FALSE

5. О чем 'template' %in% names(dataSet) ?

Ответ №1:

Орел, обнаружил проблему, в которой переменная template является столбцом dataSet . Я просто переименовал переменную template , чтобы избежать этой проблемы.