example - xlab size in r




2 개(또는 그 이상) 벡터의 모든 요소의 고유 한 조합 (2)

나는 R에서 다른 크기의 두 벡터로부터 모든 요소의 독특한 조합을 만들려고합니다.

예를 들어 첫 번째 벡터는

> a <- c("ABC", "DEF", "GHI")

두 번째 것은 현재 문자열로 저장된 날짜입니다.

> b <- c("2012-05-01", "2012-05-02", "2012-05-03", "2012-05-04", "2012-05-05")

이처럼 두 개의 열이있는 데이터 프레임을 만들어야합니다.

> data
    a          b
1  ABC 2012-05-01
2  ABC 2012-05-02
3  ABC 2012-05-03
4  ABC 2012-05-04
5  ABC 2012-05-05
6  DEF 2012-05-01
7  DEF 2012-05-02
8  DEF 2012-05-03
9  DEF 2012-05-04
10 DEF 2012-05-05
11 GHI 2012-05-01
12 GHI 2012-05-02
13 GHI 2012-05-03
14 GHI 2012-05-04
15 GHI 2012-05-05

그래서 기본적으로 하나의 벡터 (a)의 모든 요소를 ​​두 번째 벡터 (b)의 모든 요소와 나란히 고려하여 고유 한 조합을 찾고 있습니다.

이상적인 솔루션은 더 많은 입력 벡터로 일반화됩니다.

참조 :
조합 행렬 생성 방법


원하는 수의 열을 정렬하는 순서 기능을 사용할 수 있습니다. 귀하의 예를 들어

df <- expand.grid(a,b)
> df
   Var1       Var2
1   ABC 2012-05-01
2   DEF 2012-05-01
3   GHI 2012-05-01
4   ABC 2012-05-02
5   DEF 2012-05-02
6   GHI 2012-05-02
7   ABC 2012-05-03
8   DEF 2012-05-03
9   GHI 2012-05-03
10  ABC 2012-05-04
11  DEF 2012-05-04
12  GHI 2012-05-04
13  ABC 2012-05-05
14  DEF 2012-05-05
15  GHI 2012-05-05

> df[order( df[,1], df[,2] ),] 
   Var1       Var2
1   ABC 2012-05-01
4   ABC 2012-05-02
7   ABC 2012-05-03
10  ABC 2012-05-04
13  ABC 2012-05-05
2   DEF 2012-05-01
5   DEF 2012-05-02
8   DEF 2012-05-03
11  DEF 2012-05-04
14  DEF 2012-05-05
3   GHI 2012-05-01
6   GHI 2012-05-02
9   GHI 2012-05-03
12  GHI 2012-05-04
15  GHI 2012-05-05`

이건 네가 뭘했는지

> expand.grid(a,b)
   Var1       Var2
1   ABC 2012-05-01
2   DEF 2012-05-01
3   GHI 2012-05-01
4   ABC 2012-05-02
5   DEF 2012-05-02
6   GHI 2012-05-02
7   ABC 2012-05-03
8   DEF 2012-05-03
9   GHI 2012-05-03
10  ABC 2012-05-04
11  DEF 2012-05-04
12  GHI 2012-05-04
13  ABC 2012-05-05
14  DEF 2012-05-05
15  GHI 2012-05-05

결과 순서가 원하는 것이 아닌 경우 나중에 정렬 할 수 있습니다. expand.grid 인수 이름을 지정하면 열 이름이됩니다.

df = expand.grid(a = a, b = b)
df[order(df$a), ]

그리고 expand.grid 는 임의의 수의 입력 열로 일반화됩니다.







r-faq