これが問題です
私は.csv()を読んでこれに出力するcsvファイルを持っています:
grp b a id d c
1 grp1 2 1 id3 3 2
2 grp1 -2 1 id1 3 2
3 grp0 -2 1 id4 3 2
4 grp0 1 1 id0 3 2
5 grp0 1 1 id2 3 2
これを 2 つのデータフレームに分割します。1 つはデータを含み、もう 1 つgrp1
はgrp2
groups <- split(raw, raw$grp);
これにより、次のようになります。
$grp0
grp b a id d c
3 grp0 -2 1 id4 3 2
4 grp0 1 1 id0 3 2
5 grp0 1 1 id2 3 2
$grp1
grp b a id d c
1 grp1 2 1 id3 3 2
2 grp1 -2 1 id1 3 2
ここa,b,c,d
で、これらの各リストの行が必要なだけなので、使用するデータフレームにそれらを強制する必要がありますsubset()
。つまり、次のことを行う必要があります。
for(i in 1:length(groups))
{
x <- subset(as.data.frame(groups[i]), select = c(a,b,c,d));
some_function(x);
}
問題は、これを行うと、列 a が存在しないと表示され、この内容を印刷すると、次のようになることです。
grp0.grp grp0.b grp0.a grp0.id grp0.d grp0.c
3 grp0 -2 1 id4 3 2
4 grp0 1 1 id0 3 2
5 grp0 1 1 id2 3 2
grp1.grp grp1.b grp1.a grp1.id grp1.d grp1.c
1 grp1 2 1 id3 3 2
2 grp1 -2 1 id1 3 2
したがって、これらの列は単なる a、b、c、d ではなく、分割時に作成された名前が先頭に追加されます。これを回避する方法はありますか?または、データフレームの名前を取得して、サブセット化する要素のリストに追加する方法はありますか? 次のようなデータフレームになりたいだけです。列名は正確である必要はありません。
$grp0
b a d c
3 -2 1 3 2
4 1 1 3 2
5 1 1 3 2
$grp1
b a d c
1 2 1 3 2
2 -2 1 3 2