0
我有一个有100行的矩阵。 有没有办法获得十行最接近第一行的子集。R自组织子集
res2 <- matrix(rexp(200, rate=.1), ncol=10, nrow=100)
set1 <- subset(res2, res2 >condition1)
set1[with(set1, order(condition)), ]
set2 <- head(set1,10)
我有一个有100行的矩阵。 有没有办法获得十行最接近第一行的子集。R自组织子集
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,]
上改进的示例和一个可能的开始解决方案。这非常棒!非常感谢你的美丽解决方案。 – 2012-08-04 17:54:48
您如何定义最相似的? – 2012-08-04 11:18:56
具有最接近的相似模式。 – 2012-08-04 13:52:57
我认为这个问题很有趣,我相信其他人可能也是如此,但是你没有提供很多信息(正如Christoph所指出的那样)并且没有可重复的例子(至少是一组数据)。作为一种可能的方法,Levenshtein会想到(也许用'agrep') – 2012-08-04 13:56:51