2016-04-09 9 views
-1

予測のための分類モデルを作成しています。私はいくつかのextファイルを持っています。これをいくつかのリスト(櫛と呼ばれます)を含む1つの大きなリストに変換しました。私は大きなリストを別のデータフレームに分割して、各リストを独自の列(BIと呼ばれます)として破棄しました。各リストには要素数が異なるため、より簡単な引数行列(unlist(l)、ncol = ncol)は機能しません。最初のx行の列に0を追加するR

max_length <- max(sapply(comb,length)) 

BI<-sapply(comb, function(x){ 
c(x, rep(0, max_length - length(x))) 
}) 

これは、各リストに列を割り当て、その列内の各不足している要素ZEROの値を割り当てるデータフレームを作成します。代替案を検討するとき、私は次のようにコンパイルするために修正を行いました。これらのゼロはその列の最後に表示されますが、列の先頭にあるようにしたいと思います。ここでは、現在の出力例を示します。

cola colb colc 
2 2 2 
1 1 0 
4 0 0 

私は次の形式を生成するために、私の元のコードを変換する際にあなたの助けが必要:

acola colb colc 
2 0 0 
1 2 0 
4 1 2 
+0

オリジナルリストはどこにありますか?それは少し重要だと思われる –

+0

あなたが望むものは、もしあれば、すべての列の "トップ"にゼロを持つことですか? 'dput'であなたのリストのいくつかを投稿できますか? –

+0

@VincentBonhomme&Hadd E. Nuff dputは大きな出力ですが、本質的にcombは15個のリスト(すべて数字で、要素の数が異なり、0から18000の範囲です)です。 – sfyn

答えて

0

連結cで順番を入れ替えるのに十分であるかもしれません。

max_length <- max(sapply(comb, length)) 

BI <- sapply(comb, function(x){ 
    c(rep(0, max_length - length(x)), x) 
}) 

EDIT:コメントで追加情報に基づいて、以下に、別の方法でコードを変更する方法を示します。考え方は、最初のアプローチが に適切なデータフレームを与えている限り、 order -functionを使用することで問題を回避できます。私はこのコードは、私が 作成したマイナーの試験例に基づいて動作しますが、この修正されたアプローチがない場合、私はこの例では、あなたの comb ...

に似ているかどうか分からないことをテストしている

max_length <- max(sapply(comb,length)) 

BI <- sapply(comb, function(x){ 
    .zeros <- rep(0, max_length - length(x)) 
    .rearange <- order(c(1:length(x), .zeros)) 
    c(x, .zeros)[.rearange] 
}) 

最初に オリジナルのコードでデータフレームを作成し、その後 の列を並べ替えることは可能です。

+0

全くありません。これにより、BIがリストに再び表示されます。 – sfyn

+0

しかし、私たちがリストを持っていれば、その上に 'data.frame'を使って目的の結果を作ることができると思います。 –

+0

私はそれをデータフレームに変換しようとしましたが、私の元の応答では言及しませんでした。このエラーは、エラー 'data.frame(c(49.04、48.7、48.049997、48.069997、48.379999、48.259999、: の引数は異なる行数:4666,2686,4,431,4627'を意味します)のエラーが発生します。私の元のコードが解決しようとした同じ問題。私たちは正方形のところに戻っています。 – sfyn

関連する問題