1

这个问题可能很简单,但我没有找到解决它的好方法:我有一个包含许多子组的数据集,需要一起单独分析。因此,我想对组使用子集并将它们用于以后的分析。同样,作为分析的子集的定义应部分使用循环来完成,以节省空间并确保对所有子组进行相同的分析。

这是我的代码示例,它使用了引导包中的示例数据框:

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 部分,否则不需要。

4

1 回答 1

7

使用 lapply 列出子集:

lapply(qlist, function(x) subset(aids, quarter==x))

等效地,避免subset()

lapply(qlist, function(x) aids[aids$quarter==x,])

使用列表可能会使后续代码更易于编写和理解。您可以对列表进行子集化以获得单个数据框(就像您可以使用其中一个子集一样,如下所示)。但是您也可以迭代它(使用foror lapply)而不必构造变量名。

要按照您的要求完成工作,请使用assign

for (i in qlist) {
   assign(paste("aids.sub.",i,sep=""), subset(aids, quarter==i))
}

请注意该length()函数的删除,并且 this 直接在qlist.

于 2012-12-09T20:46:08.970 回答