4

仮定する:

x <- c(2,-5)
y <- c(1,2,3)

どうすれば入手することができますか :

z = c(2-1, 2-2, 2-3, -5-1, -5-2, -5-3) = c(1, 0, -1, -6, -7, -8)
4

4 に答える 4

12

使用outer:

> as.vector(outer(x, y, '-'))
# [1]  1 -6  0 -7 -1 -8

また、別の方法が必要な場合:

> as.vector(t(outer(x, y, '-')))
# [1]  1  0 -1 -6 -7 -8
于 2013-03-18T08:07:32.757 に答える
9

rep次のように使用できます。

rep(x, each = length(y)) - y
# [1]  1  0 -1 -6 -7 -8
于 2013-03-18T08:04:02.487 に答える
5

代替案を追加するために回答を追加..

> x
[1]  2 -5
> y
[1] 1 2 3
> rowSums(expand.grid(-y,x))
[1]  1  0 -1 -6 -7 -8
于 2013-03-18T09:24:56.247 に答える
4

2 つのステップ (@Ananda ソリューションよりもエレガントではありません) で、expand.grid

 d <- expand.grid(x,y)
 transform(d,difference = d$Var1 -d$Var2)
  Var1 Var2 difference
1    2    1          1
2   -5    1         -6
3    2    2          0
4   -5    2         -7
5    2    3         -1
6   -5    3         -8

しかし、私のほうが読みやすいと思います:)(何から何を差し引くか知っています)

于 2013-03-18T08:06:10.773 に答える