我有一个有一百行的矩阵。有没有办法获得与第一行最相似的十行的子集。
res2 <- matrix(rexp(200, rate=.1), ncol=10, nrow=100)
set1 <- subset(res2, res2 >condition1)
set1[with(set1, order(condition)), ]
set2 <- head(set1,10)
我有一个有一百行的矩阵。有没有办法获得与第一行最相似的十行的子集。
res2 <- matrix(rexp(200, rate=.1), ncol=10, nrow=100)
set1 <- subset(res2, res2 >condition1)
set1[with(set1, order(condition)), ]
set2 <- head(set1,10)
也许:
生成数据:
set.seed(101)
res2 <- matrix(rexp(200, rate=.1), ncol=10, nrow=100)
计算距离矩阵。这是非常低效的,因为我们正在计算所有成对的距离,但它的编码效率很高且易于使用,并且您有很多距离度量选择(请参阅?dist
、查找method
)。对于这个尺寸问题,它非常快。
dd <- dist(res2)
rr <- rank(as.matrix(dd)[1,])
您会注意到第一行的第一个元素(即第 1 行与其自身之间的距离)的等级为 1,其值 ( as.matrix(dd)[1,1]
) 为零。所以我们现在需要的是接下来十个最小距离的行......
res2[rr>1 & rr<=11,]