Using pmin/pmax
mn <- do.call(pmin, df1[-1])
mx <- do.call(pmax, df1[-1])
df1[-1] <- (df1[-1] - mn)/(mx - mn)
df1
char A B C
1 a 0.000000 0.5000000 1
2 b 0.297561 0.0000000 1
3 c 0.000000 0.5882353 1
Or another option is rescale with dapply
library(collapse)
library(scales)
df1[-1] <- dapply(df1[-1], MARGIN = 1, FUN = rescale)
-output
> df1
char A B C
1 a 0.000000 0.5000000 1
2 b 0.297561 0.0000000 1
3 c 0.000000 0.5882353 1
data
df1 <- structure(list(char = c("a", "b", "c"), A = c(0, 0.297560975609756,
0), B = c(0.5, 0, 0.588235294117647), C = c(1, 1, 1)),
row.names = c(NA,
-3L), class = "data.frame")