Question

I have a matrix called matrix that looks like this:

charge  convexhull_xCoor    convexhull_yCoor    id              intensity
3       3336.43             667.62       f_7936733956214261295  475891
3       3339.73             667.6        f_7936733956214261295  475891

I get two vectors, id and intensity:

idVector = matrix[4]
intensityVector = matrix[5]

I want to add these two vectors together using append:

bigVector = append(idVector, intensityVector)

However, when I do this I get this as a result:

[1]       4       3       2       1  475891 5490000 1860000 1100000

R made a class = factor out of the idVector and when I appends the intVector to it, it is not appending it to the labels. How can I append an int vector to a factor?

Below is the reproducible code, I only have trouble giving the dput(head(matrix,4)) because it gives all the id's which are quite a lot, I gave the dput(head(matrix,4)) of the vectors instead.

vector1 = structure(c(4L, 3L, 2L, 1L), .Label = c("f_15177294341548527346", "f_18178836531573487427", "f_2444900193131259878", "f_7936733956214261295"), class = factor")
vector2 = c(475891, 5490000, 1860000, 1100000)
bigVector = append(vector1, vector2)
vector1
vector2
bigVector
Was it helpful?

Solution

You can't mix factors & numbers like that in a vector - you have to use a data frame.

bigdf <- data.frame( id=idVector, intensity=intensityVector )

Then have a look at bigdf (and you can access columns via bigdf$id, etc).

Alternatively, if the elements of idVector are unique, you could add idVector as the names attribute of your intensityVector:

names(intensityVector) <- idVector

However the id is no longer a factor, but you can refer to values in intensity by a particular id as in intensityVector['f_7936733956214261295'].

The data frame approach is almost always better because it's very well-suited to statistical analysis.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top