2016-01-21 2 views
-1

У меня есть матрица, где имена столбцов являются именами образцов, и я создал вектор столбцов.Сравнение двух векторов в другом порядке и получение позиций совпадений

У меня также есть вектор имен образцов. Мне нужно подмножество из найденной мной матрицы не в том же порядке, что и имена столбцов матрицы.

Для подмножества матрицы мне нужно найти, какие столбцы в матрице соответствуют образцам, которые мне нужны.

Для иллюстрации:

colnames <- c("A","B","C","D","E","F","G","H","I") 

sample_names<- c("B","D","I") 

Мне нужен способ, чтобы получить R вернуть информацию о положении таким образом, что для примера имена образцов «B», «D», «Я», позиция COLNAMES является : [1] 2 4 9

+0

'который (COLNAMES == sample_names)' ?? (если это подмножество матрицы m: 'm [, colnames (m) == sample_names]' тоже должно быть достаточно (подсекается логическим вектором) – Tensibai

+0

вам нужна «позиция совпадений», но вы не пробовали 'match ', как получилось?' match (c («B», «D», «I»), c («A», «B», «C», «D», «E», «F», G "," H "," I "))' дает '[1] 2 4 9' ... – Cath

+0

Потому что я новичок в R, и я не понимал, что команда существует. Вот как я закончил это в конце. Спасибо за ответ –

ответ

0

образец данных:

> m=matrix(rep(1:4,3),ncol=4) 
> colnames(m)<-c("A","C","D","B") 
> m 
    A C D B 
[1,] 1 4 3 2 
[2,] 2 1 4 3 
[3,] 3 2 1 4 

> vec<-c("A","B") 
> vec 
[1] "A" "B" 

Чтобы ответить на ваш точный вопрос, используйте which, он возвращает индекс истинных значений в логическом векторе.

> which(colnames(m)==vec) 
[1] 1 4 

Но, как ваша цель, кажется, Подменит матрицу, просто использовать непосредственно образец название вектора, чтобы получить его, как это:

> m[, vec] 
    A B 
[1,] 1 2 
[2,] 2 3 
[3,] 3 4 
+1

на самом деле просто' m [, vec] 'должен делать – Cath

+0

@Cath действительно, глупо забыть об этом. – Tensibai

+0

По какой-то причине m [, vec] не подмножал имена кодов, которые я хотел, скорее, он подмножал первые 70 кодовых имен в случайном порядке, который равен количеству выборок в моем списке. Функция соответствия в конечном итоге ответила на мой вопрос, тогда я использовал позиции для подмножества. –

Смежные вопросы