2016-07-13 3 views
1

cbind 두 개의 다른 순서로 배열 된 배열을 데이터 프레임에 넣으려고합니다.두 개의 서로 다른 정렬 된 배열을 열별로 병합하는 방법

x = c("a" = 1, "z" = 10) 
y = c("z" = 10, "a" = 1) 

# Expected output: 
# x y 
# a 1 1 
# z 10 10 

내가 해봤 다음과 모두가 배열의 이름 무시 : 원칙적으로

# Unexpected outputs: 
cbind(x,y) 
merge(as.data.frame(x),as.data.frame(y)) 
library(dplyr); bind_cols(as.data.frame(x),as.data.frame(y)) 

을, 나는 dataframe로 배열을 변환 한 후 행 이름으로 바인딩, 아니면 수 있다는 것을 알 바인딩하는 동안 배열의 이름과 색인을 일치시킬 수 있습니다.

나는 그런 직선적 인 업무를위한보다 직접적인 방법이 있는지 궁금해하고있었습니다.

+1

주문'cbind (X, Y = Y [순서 (이름 (당신의 목적을 위해 충분하다 y))])'. 물론, 이것은'x'가 이미 주문되어 있다고 가정합니다. 사실이거나 그렇지 않을 수도 있습니다. –

+0

@RichardScriven Agree. 그러나 이것은 또한 모든 요소가 두 배열에 존재하고 다른 순서로 정렬되었다고 가정합니다. – Deena

답변

1

나는 최적이 아닐 수

x <- c("a" = 1, "z" = 10) 
y <- c("z" = 10, "a" = 1) 

cbind(x, "y"=y[names(x)]) 

> x y 
>a 1 1 
>z 10 10 

함께했다하지만 어쩌면 그것은 ... 이름하여

+0

'as.data.frame'아이디어보다 훨씬 뛰어납니다. Martin 고마워! – Deena

관련 문제