R에서 벡터 내의 모든 쌍 방향 차이를 계산한다.



ggplot title position (2)

가능한 해결책은 다음과 같습니다.

z = outer(v,v,'-'); 
z[lower.tri(z)];

[1] 1 2 3 1 2 1

https://ffff65535.com

벡터 사이의 쌍의 차이를 계산하는 방법에 대한 여러 게시물이 있지만 벡터 내의 모든 차이를 계산하는 방법을 찾을 수 없습니다.

벡터가 있다고 해.

v<-c(1:4)

벡터 내의 모든 쌍 방향 차이의 절대 값 인 두 번째 벡터를 생성하고 싶습니다. 비슷하다:

abs(1-2) = 1
abs(1-3) = 2
abs(1-4) = 3
abs(2-3) = 1
abs(2-4) = 2
abs(3-4) = 1

출력은 6 가지 값의 벡터가되며, 이는 6 가지 비교 결과입니다.

output<- c(1,2,3,1,2,1)

이것을 할 수있는 R에 함수가 있습니까?


골프를 즐기자.

abs(apply(combn(1:4,2), 2, diff))

@ 벤, 네가 살인자 야!

> system.time(apply(combn(1:1000,2), 2, diff))
   user  system elapsed 
   6.65    0.00    6.67 
> system.time(c(dist(1:1000)))
   user  system elapsed 
   0.02    0.00    0.01 
> system.time({
+ v <- 1:1000
+ z = outer(v,v,'-');
+ z[lower.tri(z)];
+ })
   user  system elapsed 
   0.03    0.00    0.03 

누가 우아한 (이해할 수있는 / 유동적 인) 코드가 느릴 수 있다는 것을 알았습니다.





r