-1

我有一个 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 的一个元素。

4

2 回答 2

3

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

names(ldf) <- v

其中v是一个字符向量。

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

subset.ldf <- mapply(ldf, names(ldf),
                     function(x, name) x[, x[name, ] == 1, drop = FALSE])
于 2013-06-10T17:14:03.647 回答
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]
于 2013-06-10T17:22:10.477 回答