Как выбрать несколько переменных из матрицы, используя случайно выбранный вектор индексов столбцов? - PullRequest
1 голос
/ 19 июля 2010

Надеюсь, у этого есть простой ответ, который я просто не смог найти:

Я пытаюсь написать симуляцию, которая будет сравнивать ряд статистических процедур для различных подмножеств строк (субъектов) и столбцов (переменных) большой матрицы.

Подмножества строк были довольно просты с использованием sample() номеров идентификаторов субъекта, но у меня немного больше проблем со столбцами.

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

testmat <- matrix(rnorm(10000),nrow=1000,ncol=100)
column.ind <- sample(3:100,20)
teststr <- paste("testmat[,",column.ind,"]",sep="",collapse=",")

, которая дает мне строку, которая имеет testmat[,column.ind] для каждого выбранного индекса. Есть ли способ легко подключить это к функции cbind(), чтобы создать новую матрицу? Есть ли какой-то другой очевидный способ, которым я скучаю?

Я смог сделать это с помощью цикла (то есть cbind(matrix,newcolumn) снова и снова), но это довольно медленно, поскольку матрица, которую я использую, довольно велика, и я буду делать это много раз. Я надеюсь, что есть парное решение, которое будет более элегантным и быстрым.

1 Ответ

8 голосов
/ 19 июля 2010

Вы пробовали testmat[, column.ind]?

Строки и столбцы можно индексировать одинаково с помощью логических векторов, набора имен или чисел для индексов.

См. Здесьпример: http://ideone.com/EtuUN.

...