【发布时间】:2016-06-16 14:55:52
【问题描述】:
我想在矩阵中逐行计算一个值在给定范围内时,然后将这些逻辑结果相加以得出每行的“一致性度量”。
可重现的例子:
m1 <- matrix(c(1,2,1,6,3,7,4,2,6,8,11,15), ncol=4, byrow = TRUE)
# expected outcome, given a range of +/-1 either side
exp.outcome<-matrix(c(TRUE,TRUE,TRUE,FALSE,
TRUE,FALSE,TRUE,TRUE,
FALSE,FALSE,FALSE,FALSE),
ncol=4, byrow=TRUE)
上面我已经指出了预期的结果,如果每个值都位于该行中任何其他值的 +/- 1 范围内。
在m1 的第一行内,第一个值 (1) 在该行中任何其他值的 +/-1 范围内,因此等于 TRUE,依此类推。
相比之下,m1 的第 4 行中的任何值都不在一个数字内,因此每个值都被分配为 FALSE。
任何指针将不胜感激?
更新:
感谢提供的帮助,我现在可以计算满足任意大矩阵上限标准的唯一值对(使用二项式系数,k 从 n 中抽取,无需替换)。
【问题讨论】:
-
我想
m1 <= 4起作用是巧合吗?或t(apply(m1, 1, function(x) x %in% c(x + 1, x - 1))) -
您想测试一个值是否是
==与任何其他值 +/- 1 或者它是否具有<= 1与任何其他值的差异?如果是第二种,提供带小数的示例或增加范围和值以使其更清晰可能会更方便。 -
@alexis_laz 在这种情况下,它只需要等于我正在处理的排名和整数