找出两个向量

时间:2018-01-24 12:15:28

标签: r vector

我试图找出许多数字对之间的区别。

这些数字是两个长度不等的向量。例如,

    a<- c(1:5)
    b<- c(1:10)

现在,我需要一些方法来计算a [[1]] - b然后a [[2]] - b等等,直到[[5]] - b。这些计算中的每一个都应该产生一个10个数字的向量。

这些差异向量中的每一个都应该作为列存储在数据帧中。第一列应该减去“b”的位置,后面的列应该以“a”的位置标题(所以有5列10行)。

         a[1] a[2] ... a[5]
    b[1]
    b[2]
    ...
    b[10]

我很擅长在R中编写函数。我也是使用* apply函数组的新手。我一直试图结合我所学的关于编写函数和* apply函数组来解决这个问题,但它还没有发生。谢谢你的帮助!

P.S。对不起,如果之前有人询问过。我搜索了但找不到答案。

2 个答案:

答案 0 :(得分:6)

这是outer的工作:

t(outer(a, b, '-'))

     # [,1] [,2] [,3] [,4] [,5]
 # [1,]    0    1    2    3    4
 # [2,]   -1    0    1    2    3
 # [3,]   -2   -1    0    1    2
 # [4,]   -3   -2   -1    0    1
 # [5,]   -4   -3   -2   -1    0
 # [6,]   -5   -4   -3   -2   -1
 # [7,]   -6   -5   -4   -3   -2
 # [8,]   -7   -6   -5   -4   -3
 # [9,]   -8   -7   -6   -5   -4
# [10,]   -9   -8   -7   -6   -5

答案 1 :(得分:4)

sapply(a, "-", b)
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    0    1    2    3    4
# [2,]   -1    0    1    2    3
# [3,]   -2   -1    0    1    2
# [4,]   -3   -2   -1    0    1
# [5,]   -4   -3   -2   -1    0
# [6,]   -5   -4   -3   -2   -1
# [7,]   -6   -5   -4   -3   -2
# [8,]   -7   -6   -5   -4   -3
# [9,]   -8   -7   -6   -5   -4
#[10,]   -9   -8   -7   -6   -5

说明

利用标量减去R中的向量是所述标量与向量的每个元素之间的逐元素减法的事实,我们可以简单地将减-运算符应用于{{中的每个值。 1}}针对整个向量a