2013-03-18 114 views

回答

9

您可以使用rep如下:

rep(x, each = length(y)) - y 
# [1] 1 0 -1 -6 -7 -8 
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 

但我認爲我是更具可讀性:)(你知道你什麼。減去從什麼)

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 
5

爲了添加替代品而添加答案..

> x 
[1] 2 -5 
> y 
[1] 1 2 3 
> rowSums(expand.grid(-y,x)) 
[1] 1 0 -1 -6 -7 -8 
相關問題