Я пытаюсь преобразовать фрейм данных чисел, хранящихся в виде символов в дробной форме, для хранения в виде чисел в десятичной форме. (Есть также некоторые целые числа, также сохраненные как char.) Я хочу сохранить текущую структуру фрейма данных, т.е. мне не нужен список в результате.
Пример фрейма данных (примечание: реальный фрейм данных имеет все элементы как символы, здесь это фактор, но я не мог понять, как реплицировать фрейм данных с символами):
a <- c("1","1/2","2")
b <- c("5/2","3","7/2")
c <- c("4","9/2","5")
df <- data.frame(a,b,c)
Я пробовал df[] <- apply(df,1, function(x) eval(parse(text=x)))
. Это правильно вычисляет числа, но только для последнего столбца, заполняя фрейм данных этим.
Результат:
a b c
1 4 4.5 5
2 4 4.5 5
3 4 4.5 5
Я также попробовал df[] <- lapply(df, function(x) eval(parse(text=x)))
, который дал следующий результат (и я понятия не имею, почему):
a b c
1 3 3 2
2 3 3 2
3 3 3 2
Желаемый результат:
a b c
1 1 2.5 4
2 0.5 3 4.5
3 2 3.5 5
Большое спасибо!