R 一个矩阵中所有数字的长度相同

R 一个矩阵中所有数字的长度相同,r,matrix,R,Matrix,我有一个矩阵,基本上就像 100 2100 31000 230 31 9199 我希望每个数字的大小都相同,比如100-->00100或9199-->09199。您对我有什么建议吗?对于相同的问题,我使用以下功能: add0 <- function(x, len) #x = number to add 0 ; len = the wanted length of the number { x.len <- length(unlist

我有一个矩阵,基本上就像

100    2100  
31000  230  
31     9199

我希望每个数字的大小都相同,比如100-->00100或9199-->09199。您对我有什么建议吗?

对于相同的问题,我使用以下功能:

    add0 <- function(x, len) #x = number to add 0 ; len = the wanted length of the number
    {
     x.len <- length(unlist(strsplit(as.character(x), split = "")))
     ifelse(x.len < len, paste(paste(rep(0, len - x.len), collapse = ""), x, sep = ""), as.character(x))
    }

add0对于相同的问题,我使用以下函数:

    add0 <- function(x, len) #x = number to add 0 ; len = the wanted length of the number
    {
     x.len <- length(unlist(strsplit(as.character(x), split = "")))
     ifelse(x.len < len, paste(paste(rep(0, len - x.len), collapse = ""), x, sep = ""), as.character(x))
    }

add0您可以使用
formatC

numMx <- matrix(c(100,2100,31000,230,31,9199),nrow=3,byrow=T)

frmt <- "d"   # d --> numbers formatted as integers
minWidth <- 5 # minimum characters length of each number e.g. 42 --> "00042"

chMx <- formatC(numMx, width = minWidth, format = frmt, flag = "0")

# > chMx
#      [,1]    [,2]   
# [1,] "00100" "02100"
# [2,] "31000" "00230"
# [3,] "00031" "09199"

numMx您可以使用
formatC

numMx <- matrix(c(100,2100,31000,230,31,9199),nrow=3,byrow=T)

frmt <- "d"   # d --> numbers formatted as integers
minWidth <- 5 # minimum characters length of each number e.g. 42 --> "00042"

chMx <- formatC(numMx, width = minWidth, format = frmt, flag = "0")

# > chMx
#      [,1]    [,2]   
# [1,] "00100" "02100"
# [2,] "31000" "00230"
# [3,] "00031" "09199"

numMx您可以使用
sprintf

dat <- read.table(text='100    2100  
31000  230  
31     9199')

max.len <- max(apply(dat,2,function(x)
           nchar(as.character(x))))

matrix(sprintf(paste0("%0",max.len,"d"), unlist(dat)),
          ncol=2)

dat您可以使用
sprintf

dat <- read.table(text='100    2100  
31000  230  
31     9199')

max.len <- max(apply(dat,2,function(x)
           nchar(as.character(x))))

matrix(sprintf(paste0("%0",max.len,"d"), unlist(dat)),
          ncol=2)

dat数字没有长度,数字的字符表示没有长度。。。你的矩阵是字符矩阵还是数字矩阵?他想用前导零进行格式化,这一点以前已经被问过很多次了。数字没有长度,数字的字符表示法没有长度。。。您的矩阵是字符矩阵还是数字矩阵?他想使用前导零进行格式化,这一点以前已被多次询问。添加了一种自动确定最小宽度的方法。+1!优雅地使用
formatC
。添加了一种自动确定最小宽度的方法。+1!优雅地使用
formatC
+1这就是我的想法。很好地抓住了最大长度+1,这就是我所想的。很好地抓住了最大长度