У меня есть data.frame, созданный в формате JSON. Он содержит массивы простых типов, которые по умолчанию представлены в виде списка из одного вектора. Затем в модульных тестах я пытаюсь проверить это с помощью dplyr::all_equal
(меня сейчас не волнует порядок столбцов, они переупорядочиваются на jsonlite::flatten
, и я понятия не имею, как с этим справиться).
Но all_equal
завершается с не очень полезным сообщением Can't join on 'arr' x 'arr' because of incompatible types (list / list)
. Я не знаю, что не так - list
вообще не приемлемо? Должен ли я преобразовать этот столбец во что-то еще? (что?)
Минимальный пример, показывающий, что я пытаюсь сделать:
f <- function() {
current <- jsonlite::fromJSON('{"objs":[{"arr":["l1", "l2"], "key":"1"}]}')$objs
expected <- data.frame("key" = "1", stringsAsFactors = F) %>%
mutate("arr" = list(c("l1", "l2")))
str(current)
str(expected)
all_equal(current, expected, ignore_col_order = TRUE)
}
f()
Вывод:
'data.frame': 1 obs. of 2 variables:
$ key: chr "1"
$ arr:List of 1
..$ : chr "l1" "l2"
'data.frame': 1 obs. of 2 variables:
$ key: chr "1"
$ arr:List of 1
..$ : chr "l1" "l2"
Error: Can't join on 'arr' x 'arr' because of incompatible types (list / list)
Примечание: I Как исправить ошибку «Ошибка: невозможно присоединиться к файлам« .rows »x» .rows »из-за несовместимых типов (список / список)» с использованием censReg , но я не думаю, что у меня есть эта проблема, потому что кадры данных не сгруппированы. В любом случае я пытался разгруппировать их, выход не изменился.