2013-05-22 3 views
0

В R, пусть М матрицаВ R, логические операторы и формулы для извлечения строк из матрицы

 [,1] [,2] [,3] 
[1,] 1 9 1 
[2,] 2 12 5 
[3,] 3 4 6 
[4,] 6 2 4 

Я хотел бы извлечь подматрицу м из М, применяющие различимые состояниям

условия 1: M[,1]<6 & M[,2]>8; состояние 2: M[,1]==6 & M[,2]>1.

подматрицы м должен выглядеть

 [,1] [,2] [,3] 
[1,] 1 9 1 
[2,] 2 12 5 
[3,] 6 2 4 

Я пытался использовать m <- M[(M[,1]<6 & M[,2]>8) & (M[,1]==6 & M[,2]>1) ,], но он не работает; мое использование & и скобки () не дает права m.

ответ

4

Я думаю, что вы имели в виду, чтобы использовать оператор | ИЛИ между вашими двумя условиями:

M[(M[,1]<6 & M[,2]>8) | (M[,1]==6 & M[,2]>1) ,] 
#  [,1] [,2] [,3] 
# [1,] 1 9 1 
# [2,] 2 12 5 
# [3,] 6 2 4 

|, имеющий более низкий приоритет, чем & согласно ?Syntax, вы можете даже удалить все круглые скобки. Но не стесняйтесь держать их вокруг, если это поможет вам с ясностью.

+0

определенно лучше: оператор & был источником проблем, а не скобками. Большое спасибо, Авитус – Avitus