#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
, чтобы избежать этой проблемы.