2012-11-12 47 views
1

我有一个向量x。我想创建一个对元素的矩阵,它们的差值小于或等于1e-2。我如何在R中做到这一点?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 

回答

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 
+0

+1为简洁和简单 – mnel

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 
... 

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

+0

感谢但这不是我想要的矩阵。 –