2017-05-18 24 views
-1

Rと30分前に作業を始め、SQL ServerのRスクリプトを実行していると言わなければならないので、 。長さの異なる2つのベクトルをデータフレームにマージ

私は2つのRベクトルをデータフレームにマージしようとしていますが、私の問題はベクトルの長さが変わることです。

私は必ずしもそうではありませんが、これを行うことができますか分かりませんか?

マイRスクリプトは次のとおりです。

n <- c(2, 3, 5, 6); 
s = c("aa", "bb", "cc"); 
df = data.frame(n, s); 

そして、私は取得していますエラーは次のとおりです。

data.frameでエラーが発生しました(N、S):引数は 行の異なる数を意味するものではあり:4,3コール:ソース - > withVisible - > eval - > eval - > data.frame

ScaleRのエラー。詳細については、出力を確認してください。 のエラーeval(expr、envir、enclos):ScaleRのエラーです。詳細については の出力を確認してください。コール:ソース - > withVisible - >評価 - >評価 - > は.call実行私はやって想像してることLEFT JOINに似た結果セットを生成しているEsentially

を停止しました。

2 aa 
3 bb 
5 cc 
6 NULL 

私はRのデータフレームに「NULLを置き換える」値を指定する必要がある場合、私は自分自身を求めているが、私はこれが解決策であるかはわかりません。多分

+1

はあなたがそこにNULL' '持っているのではなく、' NA'(不足しているため)することはできません:(N = N、S = Sで) 'L =リスト。 data.frame(lapply(L、\ 'length < - \'、max(lengths(L)))) 'となります。私はこれのためのいくつかの二等式があると思う。 – Frank

+0

あなたが参照しているものは「マージ」していません。 'merge'にはキーが必要です。 Rのdata.frameに異なる長さの 'list'を組み合わせることはできません。それらを結合するには同じ長さにする必要があります。どのようにそれらを結合したいですか? – DJJ

+0

@DJJ Rデータフレームに暗黙的なキーが生成されているため、それぞれの行にJOINまたはマップできるようになっていますが、まだ何も見つかりませんでした。 –

答えて

1

この1:

sq <- seq(max(length(n), length(s))) 
data.frame(n[sq], s[sq]) 

# n.sq. s.sq. 
#1  2 aa 
#2  3 bb 
#3  5 cc 
#4  6 <NA> 
+1

私はこれが好きです!どうもありがとう! –

関連する問題