У меня проблемы с созданием стандартизированных типов столбцов.Я пишу функцию, которая переходит от столбца к столбцу, ищет, какой тип данных должен быть из другого списка, а затем изменяет формат столбца на этот тип.
as.data.frame(lapply(claims,
function(fun.col){
col.type <- claims.mapping$type[match(colnames(fun.col),
claims.mapping$col.name.std)]
if (is.na(col.type)) {
#Do nothing
} else if (col.type == "Date") {
as.Date(fun.col[], origin = "1900-01-01")
}
}))
Это дает ошибку
Ошибка в if (is.na (col.type)) {: аргумент имеет нулевую длину
Я думаю, что проблема возникает из-за неуверенности в том, как lapply передает свой аргументфункция.Как бы это исправить?
Пример данных:
claims <- structure(list(a = c(13245, 43220, 45221), b = 1:3), row.names = (NA, -3L), class = "data.frame")
claims.mapping <- structure(list(col.name.std = structure(1:3, .Label = c("a", "b", "c"), class = "factor"), x = c("Date", "numeric", "character")), row.names = c(NA, -3L), class = "data.frame")
Ожидаемый результат:
structure(list(a = structure(c(-12322, 17653, 19654), class = "Date"), b = 1:3), row.names = c(NA, -3L), class = "data.frame")