Добрый день всем,
Так что я боролся с этим пару дней.
У меня есть data.frame из примерно 20 000 строк и 18 столбцов (20000 X 18) целых значений, около половины из которых являются отрицательными значениями и некоторые нули.
т.е. если я делаю
sapply(fj, typeof)
я получаю -
volc.X.x volc.y.x volc.X.y volc.y.y volc.X.x.x volc.y.x.x volc.X.y.y volc.y.y.y volc.X.x.x.x
"integer" "integer" "integer" "integer" "integer" "integer" "integer" "integer" "integer"
volc.y.x.x.x volc.X.y.y.y volc.y.y.y.y volc.X.x.x.x.x volc.y.x.x.x.x volc.X.y.y.y.y volc.y.y.y.y.y volc.X volc.y
"integer" "integer" "integer" "integer" "integer" "integer" "integer" "integer" "integer"
я знаю, что могу сделать
fj_2<-as.data.frame(sapply(fj_1, as.double))
Это, однако, вызывает проблемы с тем, как рассматриваются факторы, поэтому, принимая подсказки из этих сообщений -
Как преобразовать фактор в целое число \ цифра c без потери информации? & { ссылка }
Мне бы пришлось сделать что-то вроде
as.double(as.character(fj$volc.X.x))
или с точки зрения sapply
fj_2<-as.data.frame(sapply(fj, as.character))
and then
fj_2<-as.data.frame(sapply(fj, as.double))
Таким образом, однако, первый sapply
с as.character
не меняет мои столбцы на тип символов, и поэтому, когда я запускаю sapply
с as.double
- он преобразует все столбцы в двойной тип , но числа округляются - удаляются все десятичные дроби, а отрицательные значения преобразуются в положительные значения.
Я попытался запустить "гнездо" ed "sapply
вот так
fj_2<-as.data.frame(sapply((sapply(fj, as.character)), as.double))
но в итоге получается только один столбец с 360 000 значений, хотя числа в их исходном формате и не округлены.
Что меняется мне нужно сделать? Надеюсь, я прояснил свою проблему.
Спасибо