这个问题可能很简单,但我找不到解决它的好方法:我有一个包含许多子组的数据集,这些子组需要单独分析。因此,我想为组使用子集,并将它们用于以后的分析。同样,将子集定义为分析应部分使用循环完成,以节省空间并确保对所有子组执行相同的分析。
下面是使用引导包中的示例数据帧的代码示例:
data(aids)
qlist <- c("1","2","3","4")
for (i in length(qlist)) {
paste("aids.sub.",qlist[i],sep="") <- subset(aids, quarter==qlist[i])
}
包含数据集中子组的变量存储为字符串,因此我添加了 qlist 部分,否则不需要。
使用 lapply 列出子集:
lapply(qlist, function(x) subset(aids, quarter==x))
等价地,避免subset()
:
lapply(qlist, function(x) aids[aids$quarter==x,])
使用列表可能会使后续代码更易于编写和理解。 您可以对列表进行子集化以获取单个数据框(就像您可以使用其中一个子集一样,如下所示)。 但您也可以迭代它(使用 for
或 lapply
),而无需构造变量名称。
要按照您的要求完成工作,请使用assign
:
for (i in qlist) {
assign(paste("aids.sub.",i,sep=""), subset(aids, quarter==i))
}
请注意删除了length()
函数,这是直接迭代qlist
。