Как преобразовать весь массив данных в числовое, сохраняя при этом десятичные дроби?

У меня есть смешанный класс данных (числовой и факторный), где я пытаюсь преобразовать весь кадр данных в числовой. Следующее иллюстрирует тип данных, с которыми я работаю, а также проблему, с которой я сталкиваюсь:

> a = as.factor(c(0.01,0.02,0.03,0.04))
> b = c(2,4,5,7)
> df1 = data.frame(a,b)
> class(df1$a)
[1] "factor"
> class(df1$b)
[1] "numeric"

Когда я пытаюсь преобразовать весь фрейм данных в числовой, он изменяет числовые значения. Например:

> df2 = as.data.frame(sapply(df1, as.numeric))
> class(df2$a)
[1] "numeric"
> df2
  a b
1 1 2
2 2 4
3 3 5
4 4 7

Предыдущие сообщения на этом сайте предлагают использоватьas.numeric(as.character(df1$a)), который прекрасно работает для одного столбца. Однако мне нужно применить этот подход к фрейму данных, который может содержать сотни столбцов.

Каковы мои варианты для преобразования целого кадра данных из фактора в числовое, сохраняя при этом числовые десятичные значения?

Ниже приведен вывод, который я хотел бы получить гдеa а такжеb являются числовыми:

     a b
1 0.01 2
2 0.02 4
3 0.03 5
4 0.04 7

Я прочитал следующие связанные посты, хотя ни один из них не относится непосредственно к этому делу:

Как преобразовать факторную переменную в числовую при сохранении чисел в R Это ссылается на один столбец в кадре данных.преобразование из символа в числовой фрейм данных, Этот пост не учитывает десятичные значения.Как я могу преобразовать столбец фактора, который содержит десятичные числа в числовые?, Это относится только к одному столбцу во фрейме данных.

Ответы на вопрос(4)

Ваш ответ на вопрос