通过列表中的列名称为列表中的数据框命名

时间:2019-05-19 18:57:02

标签: r list loops dataframe

我有一个大型数据框,其中包含多个类别变量和一个连续变量。我已经生成了分类变量的所有组合,如下所示:

library(DescTools)
data(mtcars)
data <- mtcars[, c(1,2,8:11)]

var.names <- colnames(data[,2:6])
x <- CombSet(var.names, c(2:5), repl = FALSE, ord = FALSE, as.list = TRUE)

head(x)
[[1]]
[1] "cyl" "vs" 

[[2]]
[1] "cyl" "am" 

[[3]]
[1] "cyl"  "gear"

我正在编写一个for循环,该循环根据每种组合创建一个数据帧列表。

listofdfs <- list() 

for (i in 1:length(x)) {
y <- c(x[[i]], "mpg")
matchExpression <- paste(y, collapse = "|")
temp_df <- list(data %>% select(matches(matchExpression)))
listofdfs[[i]] <- temp_df 
}

我想使用唯一的列名来命名每个数据框。例如,数据帧1应该命名为“ mpg | cyl | vs”,数据帧2应该命名为“ mpg | cyl | am”。我意识到我需要在现有循环中嵌套另一个循环。但是,我在执行此操作时遇到了问题。

这是一次失败的尝试(已添加到上面的代码中):

for (j in seq_along(listofdfs))
names(listofdfs) <- paste(colnames(listofdfs[[i]][[j]]), collapse = "|")

我不经常使用循环或数据帧列表,因此我意识到自己可能犯了一个简单的错误。有人可以帮忙吗?

0 个答案:

没有答案