私はリストにdata.frameオブジェクトを持っていますが、それぞれ最後の列(A.K.A、score)に基づいてフィルタリングします。リストのサブセットは私には直感的ですが、私は各data.frameオブジェクトのためのフィルタリングの結果として2つの異なるセット(すなわち、合格/不合格)を持ちたいと思います。私が使用した方法はエレガントではないと思っていますし、より効率的なソリューションを求めています。誰も私にどのようにこのようなタスクのためのよりエレガントなソリューションを達成するために私を指摘することができますどうもありがとう !リスト内の大きなdata.frameオブジェクトを効率的にサブセット化できますか?
おもちゃデータ:
mylist <- list(df1=data.frame(from=seq(1, by=4, len=16), to=seq(3, by=4, len=16), score=sample(30, 16)),
df2=data.frame(from=seq(3, by=7, len=20), to=seq(6, by=7, len=20), score=sample(30, 20)),
df3=data.frame(from=seq(4, by=8, len=25), to=seq(7, by=8, len=25), score=sample(30, 25)))
私の最初の試み:
pass <- lapply(mylist, function(ele_) {
ans <- subset(ele_, ele_$score > 20)
ans
})
は、私は、また、インスタンスがフィルタリング条件を満たし、かつ合格入れていないその逆のセットを持つようにしたい失敗判明します各data.frameオブジェクトに対して1つのリストに設定します。
希望する出力:各data.frameオブジェクトは、サブセット化した後にパス、フェイルセットを持つことができます。
リスト内に非常に大きなdata.frameオブジェクトがある場合、これを行うには何が良いですか?誰もがこのための便利なトリックを知っていますか?
@ Andy.Jian私はあなたのコメントを正しく理解しているかどうかはわかりません。あなたのコードをより効率的なものに置き換えることが問題だったと私は理解しています。 – akrun
あなたのコードは効率的です。私は私のコメントを編集しました –
@ Andy.Jian 'split 'を使って投稿を更新しました – akrun