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)
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)
您可以使用rep
如下:
rep(x, each = length(y)) - y
# [1] 1 0 -1 -6 -7 -8
在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
但我認爲我是更具可讀性:)(你知道你什麼。減去從什麼)
使用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
爲了添加替代品而添加答案..
> x
[1] 2 -5
> y
[1] 1 2 3
> rowSums(expand.grid(-y,x))
[1] 1 0 -1 -6 -7 -8