【发布时间】:2020-12-06 04:44:22
【问题描述】:
我有一个数据集dt,它存储了列表数据集名称,我需要使用它们来创建一些新的数据集并选择一些变量,然后我使用我刚刚创建的数据集,重复相同的过程.....
第一行和第二行是可用的数据。 然后使用可用数据创建新数据。 然后使用 data just create 创建一个新数据
最终的输出是数据集列表
感谢任何帮助或建议。
dt <- data.frame(name = c("mtcars","iris", "mtcars_new","mtcars_new_1"),
data_source = c("mtcars","iris", "mtcars","mtcars_new"),
variable = c("","","mpg,cyl,am,hp","mpg,cyl"), stringsAsFactors = FALSE)
> dt
name data_source variable
1 mtcars mtcars
2 iris iris
3 mtcars_new mtcars mpg,cyl,am,hp
4 mtcars_new_1 mtcars_new mpg,cyl
dt_list <- list(mtcars, iris)
names(dt_list ) <- c("mtcars","iris")
# The final list of datasets
final_dt <- list(mtcars, iris, mtcars_new, mtcars_new_1)
到目前为止,如果我写了这样的循环,我只得到了mtcars_new 数据集,但我不知道如何返回列表并继续循环以获取mtcars_new_1 等等。我有很多数据集,不知道应该循环嵌套数据多少次。
mtcars_new <- data.frame()
for(i in 1:nrow(dt)){
if(dt$data_source[[i]] %in% names(dt_list) && !dt$name[[i]] %in% names(dt_list)){
check <- eval(parse(text = dt$data_source[[i]]))
var <- c(unlist(strsplit(dt$variable[[i]],",")))
mtcars_new <- check[, colnames(check) %in% var]
}
}
【问题讨论】: