【发布时间】:2020-05-15 11:28:01
【问题描述】:
我有一个数据框列表:
frame_list = lst(NotREP, Day0_4, Day10_12, Day14_15, Day20, Day5_7, OIS)
我想为每个数据框创建文件夹,每个文件夹都带有数据框的名称(然后根据同一函数中的其他分析将内容放入这些文件夹中,所以我不能只使用 sapply)。我创建了(简化的)函数:
Create_dir = function(data){
filename = deparse(substitute(data))
dir.create(filename, showWarnings = FALSE)
}
并使用了for循环
for(i in frame_list){
Create_dir(i)
}
但这会将所有文件夹命名为“i”。有没有办法可以通过Create_dir 函数运行数据框列表并为文件夹提供正确的名称?
或者,我可以在 framelist 中命名数据框:
names(Filter_list) = c("NotREP", "Day0_4", "Day10_12", "Day14_15", "Day20",
"Day5_7", "OIS")
但我不知道如何让 for 循环识别名称 [i]。我试过了
for(i in Filter_list) {
foldername = names(Filter_list)[[i]]
Create_dir(foldername)
}
和各种类似的东西,但无法让for函数识别名字。
谢谢!
【问题讨论】:
-
试试
Create_dir(paste0(i))。 -
@Nico 我认为这只会命名所有目录
"paste0(i)" -
你可以把
filename = deparse(substitute(data))改成filename = eval(substitute(data)) -
是的,只需将文件夹命名为 paste0(i) (@Nico)
-
@James 您遇到的问题是
frame_list包含未命名 数据框副本,因此一旦您创建frame_list,其中就没有任何名称可以用来创建文件路径。当然,还有很多其他方法可以做到这一点:你可以让 frame_list 成为一个命名列表,或者你可以编写一个函数来获取你想要放入frame_list的所有数据帧,但你不能这样做您尝试的方式。