Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 向量的元素减法?_R - Fatal编程技术网

R 向量的元素减法?

R 向量的元素减法?,r,R,在R中有如下向量 x<-c(5,7,8,20,11,30) xYes,outer生成一个矩阵,其中包含两个方向上的所有可能组合(a-b和b-a),在这种情况下不需要这些组合 也许,您可以使用combn: combn(x, 2, diff) #[1] 2 3 15 6 25 1 13 4 23 12 3 22 -9 10 19 正如@Rui Barradas指出的,outer可能不是正确的解决方案,因为它在条件1高阶函数中失败;与上述内容相比,不那么简洁/易读,但由于某些原因

在R中有如下向量

x<-c(5,7,8,20,11,30)

xYes,
outer
生成一个矩阵,其中包含两个方向上的所有可能组合(
a-b
b-a
),在这种情况下不需要这些组合

也许,您可以使用
combn

combn(x, 2, diff)
#[1]  2  3 15  6 25  1 13  4 23 12  3 22 -9 10 19

正如@Rui Barradas指出的,
outer
可能不是正确的解决方案,因为它在条件
1高阶函数中失败;与上述内容相比,不那么简洁/易读,但由于某些原因,速度更快

Filter(function(y) {y != 0},
   do.call("c", (Map(function(i){y <- x - x[i]; y[i:length(x)]}, seq_along(x)))))
过滤器(函数(y){y!=0},

do.call(“c”),(Map(函数(i){y您可以使用
lower.tri
upper.tri
outer
的输出子集

y <- outer(x, x, '-')
y[lower.tri(y)]
# [1]  2  3 15  6 25  1 13  4 23 12  3 22 -9 10 19

展平矩阵:
as.vector(外部(x,x,'-'))
c(外部(x,x,'-'))
outer
不是正确的解决方案,请参阅my to user@RonalShah。也许您可以补充一下,这是正确的结果,而不是
outer
,因为
outer
也将计算
x1-x1
x2-x2
,等等,OP明确要求
xi xj
使用
1@Dharman两者兼而有之,我认为这是一个int这是一个可能有人能回答的问题。它比combn()快,我不明白为什么。我本以为combn()会是最佳的,因为这是R内置的功能。@达曼不担心,不是有意搅动锅,只是感兴趣。很好的解决方案,带有
lower.tri
,+1.一行选项
outer(x,x,“-”)[lower.tri(diag(x))]
k <- seq(length(x) - 1, 1)
i <- rep(seq_along(k), k)
j <- sequence(k) + i
x[j] - x[i]
# [1]  2  3 15  6 25  1 13  4 23 12  3 22 -9 10 19