循环遍历R中的多个数据帧

时间:2017-11-07 23:31:54

标签: r

这里是R的新手。我有多个数据框(具有相同的变量),我想从中创建子集(通过保留几个相同的变量)。

我通过以下方式保存了数据框的名称:

dfs<-Filter(function(x) is.data.frame(get(x)) , ls())

我以为我可以通过以下方式创建子集:

for(d in dfs) {assign(paste0(d,"_subset"), subset(d, select = c(x, y, z)))}

但它并不像&#34; d&#34;在子集函数中被识别为数据集。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

详细阐述本的评论:

您通常知道环境中的最新名称。使用ls()get()可以获得您环境中的数据框列表,前提是它们是唯一的。因此,如果有irismtcars谎言,它也会抓住它。

因此,您最好创建一个明确的数据框列表。

一旦你有了这个列表,就可以使用一个循环,但更多的R做事方式是使用apply函数系列,它在列表元素上迭代一个函数或者矢量。

在这种情况下,您将使用lapply和匿名函数,以便对数据框列表中的每个元素进行子集化。这将返回子集化数据帧列表。

list <- list(mtcars, mtcars, mtcars)

lapply(list, function(x) subset(x, select = c(mpg, cyl)))