这个问题可能很简单,但我找不到解决问题的好方法: 我有一个包含许多子组的数据集,需要对它们进行全面分析。因此,我想使用组的子集并将其用于以后的分析。同样,作为分析的子集的定义应该部分地用循环来完成,以便节省空间并确保对所有子组进行相同的分析。
以下是使用启动包中的示例数据框的代码示例:
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部分,否则将不需要。
答案 0 :(得分:7)
使用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
上进行迭代。