这是问题
我有一个我 read.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
现在我想把它分成两个数据框,一个带有数据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);
}
问题是,当我这样做时,它说column a doesn't exist,当我打印这些东西时,这就是我们看到的:
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