2010-07-19 55 views
1

希望這有一個簡單的答案,我只是無法找到:如何使用隨機選擇的列索引向量從矩陣中選擇多個變量?

我想寫一個模擬,將比較不同的行子集(主體)和列(變量)的統計程序數量,的大矩陣。

使用主題ID編號的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))來完成它,但這相當慢,因爲我使用的矩陣非常大,而且我將多次執行此操作。我希望有一個更加優雅和快捷的聯機解決方案。

回答

7

您試過testmat[, column.ind]嗎?

行和列可以用相同的方式用邏輯向量,一組名稱或索引編號建立索引。

查看這裏的例子:http://ideone.com/EtuUN。哈哈!

+0

哈!這工作。我知道這會很容易,我只是在空白。 :) 我會接受你的答案,當它讓我......謝謝! – Adam 2010-07-19 14:22:51