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)一遍又一遍)来做到这一点,但这相当慢,因为我使用的矩阵非常大,我会这样做很多次。我希望有一个更优雅和更快的双线解决方案。

4

1 回答 1

8

你试过testmat[, column.ind]吗?

行和列可以使用逻辑向量、一组名称或索引编号以相同的方式进行索引。

请参阅此处以获取示例:http: //ideone.com/EtuUN

于 2010-07-19T14:17:57.020 回答