2016-07-13 23 views
1

cbind異なる2つの名前付き配列をデータフレームにしようとしています。2つの異なる順序の配列を列でマージする方法

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に配列を変換して、行名によって結合することができることを知っている、またはIバインド中に名前と一致し、配列のインデックスを付けることができます。

私は、このような単純な作業のためのより直接的な方法があるのだろうかと思っていました。

+1

注文 'CBIND(X、Y = Y [順序(名前(あなたの目的のために十分ですy))]) 'とする。もちろん、これは 'x'が既に順序付けられていると仮定します。これは真であるかもしれません。 –

+0

@RichardScriven同意しますが、これはまた、すべての要素が2つの配列に存在し、異なる順序で配列されていることを前提としています。 – 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」アイデアよりもずっと優れています。マーティンありがとう! – Deena

関連する問題