2010-07-19 53 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