I have a n x 3 matrix in R and want to remove all rows where the last column is less than x. What is the best way to do this?
Asked
Active
Viewed 5.3k times
3 Answers
16
You could also use the subset()
function.
a <- matrix(1:9, nrow=3)
threshhold <- 8
subset(a, a[ , 3] < threshhold)

johannes
- 14,043
- 5
- 40
- 51
5
Same approach as @JeffAllen but in a little more detail and generalisable to a matrix of any size.
data <- rbind(c(1,2,3), c(1, 7, 4), c(4,6,7), c(3, 3, 3), c(4, 8, 6))
data
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 1 7 4
[3,] 4 6 7
[4,] 3 3 3
[5,] 4 8 6
#
# set value of x
x <- 3
#
# return matrix that contains only those rows where value in
# the final column is greater than x.
# This will scale up to a matrix of any size
data[data[,ncol(data)]>x,]
[,1] [,2] [,3]
[1,] 1 7 4
[2,] 4 6 7
[3,] 4 8 6

Ben
- 41,615
- 18
- 132
- 227
2
m <- matrix(rnorm(9), ncol=3)
m <- m[m[,3]>0,]
Creates a matrix, then redefines that matrix only to include those rows in which the third column is greater than 0 (m[,3] > 0
).

Jeff Allen
- 17,277
- 8
- 49
- 70