我有一个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。
答案 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]