【发布时间】:2021-04-15 04:28:47
【问题描述】:
我正在使用 R 编程语言。在上一个问题 (R: Importing Entire Folder of Files) 中,我学习了如何从给定文件夹中导入所有文件并按“顺序”命名它们:
#Get the path of filenames
filenames <- list.files("C:/Users/Documents/files_i_want", full.names = TRUE)
#Read them in a list
list_data <- lapply(filenames, read.table)
#Name them as per your choice (df_1, df_2 etc)
names(list_data) <- paste('df', seq_along(filenames), sep = '_')
#Create objects in global environment.
list2env(list_data, .GlobalEnv)
这会从该文件夹中导入所有文件并将它们命名为“df_1”、“df_2”、“df_3”等。看起来“seq_along”语句添加了“1”、“2”、“3” " 用于这些文件中的每一个。
是否有更改“seq_along”语句以使其以不同的数字开头?第一个文件可以命名为“df_100”,后跟“df_101”、“df_102”……还是“df_a1、df_a2”、df_a3?
我问这个的原因:假设我现在有两个不同文件夹(“files_i_want_a”,“files_i_want_b”)中的文件,我想导入 R。我可以修改答案如下:
#first folder
filenames <- list.files("C:/Users/Documents/files_i_want_a", full.names = TRUE)
#Read them in a list
list_data <- lapply(filenames, read.table)
names(list_data) <- paste('dfa', seq_along(filenames), sep = '_')
#Create objects in global environment.
list2env(list_data, .GlobalEnv)
#second folder
filenames <- list.files("C:/Users/Documents/files_i_want_b", full.names = TRUE)
#Read them in a list
list_data <- lapply(filenames, read.table)
names(list_data) <- paste('dfb', seq_along(filenames), sep = '_')
#Create objects in global environment.
list2env(list_data, .GlobalEnv)
是否有更有效的方法将所有这些导入的文件合并到一个文件中?
例如new_file = rbind(dfa_1, dfa_2, dfa_3, dfb_1, dfb_2, dfb_3)
如果这些文件没有通过写 paste('dfb', seq_along(filenames), sep = '_') 与 paste('dfa', seq_along(filenames), sep = '_') 来命名,那么每次引入新文件时,它们都会被覆盖并删除。
有没有直接命令可以自动“rbind”所有已经导入本地环境的文件,并将它们分配给一些新的对象,例如“new_file”?
【问题讨论】:
-
感觉你在这里问了两个问题。