data.frames列表中的子集

时间:2013-06-10 16:55:12

标签: r

我有一个data.frames列表。假设列表由10个data.frames组成。我想首先根据存储在另一个文件中的名称列表重命名每个data.frames列表。 其次,假设data.frames命名为“Pippo”,“Pippo”是data.frame的一个元素。我想以下列方式进行分组:

假设这是data.frames列表中名为“Pippo”的data.frame:

Name   Sample1   Sample2  Sample3  Sample4
John      1         0       -3       -7     
Michael   0         4        2       21    
Pippo     1         1        23      0     

我想根据“Pippo”值== 1对所有元素进行子集化,以便输出为:

Name   Sample1   Sample2  
John      1         0       
Michael   0         4       
Pippo     1         1        

这将对data.frames列表的所有名称进行此操作,因为每个名称都是data.frame的元素。

有人能帮帮我吗?

提前致谢。

最好,

F。

2 个答案:

答案 0 :(得分:3)

ldf成为您的数据框列表。您可以使用以下命令更改列表名称:

names(ldf) <- v

其中v是一个字符向量。

对于第二步(子集),这应该有效:

subset.ldf <- mapply(ldf, names(ldf),
                     function(x, name) x[, x[name, ] == 1, drop = FALSE])

答案 1 :(得分:2)

或基于矢量的解决方案:

d = data.frame(name=c('john','michael','pippo'), sample1 = c(1,0,1),
           sample2 = c(0,4,1), sample3 = c(-3,2,23), sample4 = c(-7,21,0))

sel = d[d$name == 'pippo',2:5]; sel = c(TRUE, sel == 1)
d[,sel]