Попробуйте следующее: он использует formatC
, чтобы получить правильную ширину вывода и десятичные разряды. Он определяет количество цифр до и после десятичной точки с помощью strsplit/sapply/nchar
.
fun <- function(X){
sp <- strsplit(as.character(X[[1]]), "\\.")
m <- max(nchar(sapply(sp, '[[', 1)))
n <- max(nchar(sapply(sp, '[[', 2)))
formatC(as.numeric(as.character(X[[2]])),
digits = n, width = m + n + 1,
format = "f", flag = "0")
}
fun(df)
#[1] "0023.30" "0023.00" "2323.23"