У меня есть матрица n x 3 в R и вы хотите удалить все строки, где последний столбец меньше x. Каков наилучший способ сделать это?
Удаление строк в R на основе значений в одном столбце
Ответ 1
Вы также можете использовать функцию subset()
.
a <- matrix(1:9, nrow=3)
threshhold <- 8
subset(a, a[ , 3] < threshhold)
Ответ 2
Тот же подход, что и @JeffAllen, но немного более подробно и обобщен для матрицы любого размера.
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
Ответ 3
m <- matrix(rnorm(9), ncol=3)
m <- m[m[,3]>0,]
Создает матрицу, затем переопределяет эту матрицу только для включения тех строк, в которых третий столбец больше 0 (m[,3] > 0
).