这里是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;在子集函数中被识别为数据集。有人可以帮忙吗?
答案 0 :(得分:0)
详细阐述本的评论:
您通常知道环境中的最新名称。使用ls()
和get()
可以获得您环境中的数据框列表,前提是它们是唯一的。因此,如果有iris
或mtcars
谎言,它也会抓住它。
因此,您最好创建一个明确的数据框列表。
一旦你有了这个列表,就可以使用一个循环,但更多的R
做事方式是使用apply
函数系列,它在列表元素上迭代一个函数或者矢量。
在这种情况下,您将使用lapply
和匿名函数,以便对数据框列表中的每个元素进行子集化。这将返回子集化数据帧列表。
list <- list(mtcars, mtcars, mtcars)
lapply(list, function(x) subset(x, select = c(mpg, cyl)))