[R] Removing Double Quotations After Using Cbind

David Winsemius dwinsemius at comcast.net
Thu Jun 7 01:09:56 CEST 2012


On Jun 6, 2012, at 3:51 PM, Joshua Budman wrote:

> Hi,
> I am trying to process genomics data and the presence of both
> characters and integers in an array is giving issues.

That is probably because you do not understand that it there is even  
one character in an array, then that is what ALL the rest of the items  
are.

> The following is
> an example:
>> a<-array(c(2,2,"X",1:3,2:4),dim=c(3,3))
>> b<-cbind(a[,1],a[,2])
> With the output being:
>      [,1] [,2]
> [1,] "2"  "1"
> [2,] "2"  "2"
> [3,] "X"  "3"
>
> Is there any way for me to remove the quotation marks from every
> integer/character in the new array? Or, is there a way to create the
> new array without getting the quotation marks?

It depend on what you mean by "not getting" or "removing the quotation  
marks". What is your goal?

There is no way to have a mixture of character and numeric class items  
in a matrix. (There is also no way of have a column in a data.frame  
which is a mixture of different atomic classes.) The printed  
representation of a character class dataframe will not produce quotes  
on the console, admittedly a  different behavior, but the internal  
representations will be the same.

 > data.frame(x=letters[1:3])$x  == matrix(letters[1:3], 1)[1,]
[1] TRUE TRUE TRUE
 > data.frame(x=letters[1:3])$x
[1] a b c
Levels: a b c
 >  matrix(letters[1:3], 1)[1,]
[1] "a" "b" "c"

You can have a matrix of lists and I think you can have items in a  
column of a dataframe which are lists. Those are some uncommonly used  
methods which would allow (with some added overhead) storing items of  
different classes in a data structure that you could access with what  
might be called dimensional indexing.

 > matrix(c(list(1), list(2), list("a")), 1)
      [,1] [,2] [,3]
[1,] 1    2    "a"
 > str(matrix(c(list(1), list(2), list("a")), 1)[1,3])
List of 1
  $ : chr "a"
 > str(matrix(c(list(1), list(2), list("a")), 1)[1,2])
List of 1
  $ : num 2

>

-- 

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list