17
votes

I have this code in R:

seq1 <- seq(1:20)
mat <- matrix(seq1, 2)

and the result is:

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    1    3    5    7    9   11   13   15   17    19
[2,]    2    4    6    8   10   12   14   16   18    20

Does R have an option to suppress the display of column names and row names so that I don't get the [,1] [,2] and so on?

5
do you mean in the R console? or when you export from R? - Justin
Also note that in R you don't need the semicolons at the end of the statement. And mat isn't a command. I'm assuming you mean matrix(seq1, 2) because your command doesn't work... - Dason

5 Answers

16
votes

If you want to retain the dimension names but just not print them, you can define a new print function.

print.matrix <- function(m){
write.table(format(m, justify="right"),
            row.names=F, col.names=F, quote=F)
}

> print(mat)
 1  3  5  7  9 11 13 15 17 19
 2  4  6  8 10 12 14 16 18 20
4
votes

This works for matrices:

seq1 <- seq(1:20)
mat <- matrix(seq1, 2)

dimnames(mat) <-list(rep("", dim(mat)[1]), rep("", dim(mat)[2]))
mat
3
votes

There is, also, ?prmatrix:

prmatrix(mat, collab = rep_len("", ncol(mat)), rowlab = rep_len("", ncol(mat)))
#                          
# 1 3 5 7  9 11 13 15 17 19
# 2 4 6 8 10 12 14 16 18 20
1
votes

Solution by Fojtasek is probably the best, but here is another using sprintf instead.

print.matrix <- function(x,digits=getOption('digits')){
  fmt <- sprintf("%% .%if",digits)
  for(r in 1:nrow(x))
    writeLines(paste(sapply(x[r,],function(x){sprintf(fmt,x)}),collapse=" "))
}
0
votes
> writeLines(apply(format(matrix(1:20,2)),1,paste,collapse=" "))
 1  3  5  7  9 11 13 15 17 19
 2  4  6  8 10 12 14 16 18 20
> writeLines(apply(matrix(1:20,2),1,paste,collapse=" "))
1 3 5 7 9 11 13 15 17 19
2 4 6 8 10 12 14 16 18 20