У меня есть два небольших кадра данных, this_tx
и last_tx
. Они каждым способом, которым я могу сказать, абсолютно идентичный. this_tx
== last_tx
результаты в кадре идентичных размеров, всех TRUE
. this_tx %in% last_tx
, два TRUEs
. Осмотренный визуально, явно идентичный. Но когда я звоню
identical(this_tx, last_tx)
Я получаю a FALSE
. Весело, даже
identical(str(this_tx), str(last_tx))
возвратит a TRUE
. Если я установил this_tx <- last_tx
, Я получу a TRUE
.
Что продолжается? У меня нет самого глубокого понимания R внутренней механикой, но я не могу найти единственное различие между этими двумя кадрами данных. Если это релевантно, эти две переменные в кадрах являются оба факторами - те же уровни, то же цифровое кодирование для уровней, оба просто подмножества того же исходного кадра данных. Преобразование их к символьным векторам не помогает.
Фон (потому что я не возражал бы против справки на этом, любом): Мне дали записи медикаментозного лечения пациентам. Каждая запись обработки по существу указывает человека и дату. Вторая таблица имеет запись для каждого препарата и дозы, данной во время конкретной обработки (обычно, нескольким наркотикам предоставляют каждое лечение). Я пытаюсь определить непрерывные периоды, в течение которых человек брал те же комбинации наркотиков в тех же дозах.
Лучший план, который я придумал, состоит в том, чтобы проверить обработки хронологически. Если комбинация наркотиков и доз для обработки [я] идентичен комбинации при обработке [i-1], то обработка [я] - часть той же фазы как обработка [i-1]. Конечно, если я не могу сравнить комбинации препарата/дозы, правильно.
Ну, заезженный крик "моар конкретика плз!" может выиграть в этом случае:
Проверьте вывод dput ()
и опубликуйте, если возможно. str ()
просто суммирует содержимое объекта, в то время как dput ()
выгружает все кровавые детали в форме, которую можно скопировать и вставить в другой интерпретатор R для регенерации объекта.
Обычно в этой ситуации полезно попробовать all.equal
, который даст вам некоторую информацию о том, почему два объекта не эквивалентны.