1

我有一个向量x。我想创建一个由对元素组成的矩阵,它们的差异小于或等于1e-2。我怎样才能在 R 中做到这一点?

    x = c(0.0001560653, 0.0001685597, 0.0002793819, 0.0006336307, 0.0455676525,
    0.3184740837, 0.3195122279, 0.3195122606)

    i = which(diff(x) <= 1e-2)

我想要的矩阵如下:

    > M
         [,1]         [,2]
  [1,] 0.0001560653 0.0001685597
  [2,] 0.0001685597 0.0002793819
  [3,] 0.0002793819 0.0006336307
  [4,] 0.3184740837 0.3195122279
  [5,] 0.3195122279 0.3195122606
4

2 回答 2

2

像那样:

idx <- which(diff(x) <= 0.01)
cbind(x[idx], x[idx+1])
#              [,1]         [,2]
# [1,] 0.0001560653 0.0001685597
# [2,] 0.0001685597 0.0002793819
# [3,] 0.0002793819 0.0006336307
# [4,] 0.3184740837 0.3195122279
# [5,] 0.3195122279 0.3195122606
于 2012-11-13T00:16:04.840 回答
1

您可以使用expand.grid.

x <- c(0.0001560653, 0.0001685597, 0.0002793819, 0.0006336307, 0.0455676525,
0.3184740837, 0.3195122279, 0.3195122606)
y <- expand.grid(x,x)
as.matrix(y[abs(y[[2]] - y[[1]]) <= 0.01,])

           Var1         Var2
1  0.0001560653 0.0001560653
2  0.0001685597 0.0001560653
3  0.0002793819 0.0001560653
4  0.0006336307 0.0001560653
9  0.0001560653 0.0001685597
10 0.0001685597 0.0001685597
11 0.0002793819 0.0001685597
...

更新:已编辑以反映已编辑问题中所需的输出。

于 2012-11-12T23:45:42.170 回答