Я пишу тестовый скрипт, чтобы проверить, читаются ли данные. Данные читаются как фрейм данных. Я пишу этот список в csv, чтобы прочитать его снова как файл csv. Но после записи в файл csv типы данных изменились. Как решить эту проблему?
test_that(desc = "Test for 'ReadData' Condition 1",
code = {
identifier = "Test"
wdPath = file.path(getwd(),"Data/xyz", identifier)
Actual_Output = ReadData(wdPath)
Expected_Output = read.csv("./UnitTest/Data/Expected_baseData.csv",
header = TRUE)
expect_equal(Actual_Output, Expected_Output)
})
ReadData - это функция для чтения данных, которая возвращает фрейм данных. Теперь, когда я экспортирую его в csvband, прочитайте его, все типы данных будут изменены. Функция ReadData выглядит следующим образом:
ReadData = function(wdPath) {
Data = fread(file = list.files(file.path(wdPath, "Olt"), full.names = TRUE) %>%
as.data.frame(.) %>%
filter(stri_detect(str = ., fixed = ".csv")) %>%
unlist(.) %>%
as.character(.),
data.table = FALSE,
stringsAsFactors = FALSE,
encoding = "UTF-8",
colClasses = "character") %>%
mutate(a = as.numeric(a),
dc = as.numeric(dc),
SN = as.numeric(SN))
return(Data)
}
Это ошибка
Error: `Actual_Output` not equal to `Expected_Output`.
Component “b”: Modes: character, numeric
Component “b”: target is character, current is numeric
Component “x”: Modes: character, numeric
Component “x”: Attributes: < target is NULL, current is list >
Component “x”: target is character, current is factor
Component “a”: Modes: character, numeric
Component “a”: Attributes: < target is NULL, current is list >
Component “a”: target is character, current is factor
Component “a”: Modes: character, numeric
Это ошибка, которую я получаю; когда я проверяю типы данных, обнаруживается несоответствие типов данных между ожидаемым выводом и фактическим выводом.
Входные данные выглядят следующим образом:
dput(Data)
structure(list(b = c("143", "123"), x = c("2018/03", "2018/07"), No = c("105", "106"),
j = c("1", "2"), a = c(120, 164), SN = c(1, 1)), row.names = 1:2, class = "data.frame")