Вы хотите применить as.numeric(as.character(...))
к каждому столбцу факторов.Приведенный ниже код показывает, как это можно сделать, воздействуя только на факторные переменные, оставляя только числовые типы.
## dummy data
df <- data.frame(V1 = factor(sample(1:5, 10, rep = TRUE)),
V2 = factor(sample(99:101, 10, rep = TRUE)),
V3 = factor(sample(1:2, 10, rep = TRUE)),
V4 = 1:10)
df2 <- data.frame(sapply(df, function(x) { if(is.factor(x)) {
as.numeric(as.character(x))
} else {
x
}
}))
Это дает:
> df2
V1 V2 V3 V4
1 4 101 2 1
2 1 100 1 2
3 5 99 2 3
4 4 99 2 4
5 2 100 1 5
6 2 100 2 6
7 2 101 2 7
8 4 100 1 8
9 2 101 2 9
10 4 101 1 10
> str(df2)
'data.frame': 10 obs. of 4 variables:
$ V1: num 4 1 5 4 2 2 2 4 2 4
$ V2: num 101 100 99 99 100 100 101 100 101 101
$ V3: num 2 1 2 2 1 2 2 1 2 1
$ V4: num 1 2 3 4 5 6 7 8 9 10