Consider the following R code.
> x = cbind(c(10, 20), c("[]", "[]"), c("[[1,2]]","[[1,3]]"))
> x
[,1] [,2] [,3]
[1,] "10" "[]" "[[1,2]]"
[2,] "20" "[]" "[[1,3]]"
Similarly
> x = rbind(c(10, "[]", "[[1,2]]"), c(20, "[]", "[[1,3]]"))
> x
[,1] [,2] [,3]
[1,] "10" "[]" "[[1,2]]"
[2,] "20" "[]" "[[1,3]]"
Now, I don’t want the integers 10 and 20 to be converted to strings.
How can I perform this operation without any such conversion? I would of
course also like to know why this conversion happens. I looked at
the cbind help and also tried Googling, but had no luck finding a
solution. I also believe that in some cases. R converts strings to
factors, and I don’t want that to happen either, though it doesn’t seem
to be happening here.
Vectors and matrices can only be of a single type and
cbindandrbindon vectors will give matrices. In these cases, the numeric values will be promoted to character values since that type will hold all the values.(Note that in your
rbindexample, the promotion happens within theccall:If you want a rectangular structure where the columns can be different types, you want a
data.frame. Any of the following should get you what you want:or (using specifically the
data.frameversion ofcbind)or (using
cbind, but making the first adata.frameso that it combines as data.frames do):