我有一个大型数据框,其中包含多个类别变量和一个连续变量。我已经生成了分类变量的所有组合,如下所示:
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 = "|")
我不经常使用循环或数据帧列表,因此我意识到自己可能犯了一个简单的错误。有人可以帮忙吗?