如何在RStudio中导入单个目录下的6个CSV文件并单独访问?
解决CSV批量导入与单独访问的问题
Hey there! Let's work through this so you can easily import and access each of your 6 CSV files individually.
先说说你当前代码的小问题
你用sapply()导入文件时,它会自动尝试简化结果——如果所有CSV的列结构完全一致,它可能把所有数据合并成一个矩阵,而不是保留每个文件作为独立的数据框。这就是为什么你需要用[[2]]来访问,但其实我们可以让结构更清晰。
方法1:用lapply()生成数据框列表(推荐)
lapply()会始终返回一个列表,每个元素对应一个导入的CSV数据框,不会自动简化,这正是我们需要的:
# 获取当前目录下所有.csv文件(注意用\\转义点号,避免误匹配) fileList <- list.files(pattern = "\\.csv$") # 批量导入,得到每个元素为数据框的列表 df_list <- lapply(fileList, read.csv) # 访问单个文件:用索引访问第n个文件 View(df_list[[1]]) # 对应1521211800.csv View(df_list[[2]]) # 对应1521212400.csv # ...以此类推到第6个
方法2:给列表元素命名,用文件名直接访问
为了更直观,我们可以给列表的每个元素设置对应的文件名(去掉.csv后缀),这样就能用文件名直接调取数据:
# 导入后给列表元素命名 names(df_list) <- tools::file_path_sans_ext(fileList) # 现在可以直接用文件名访问,两种方式都可行: View(df_list[["1521211800"]]) # 或者用$符号(注意数字开头的名称需要加反引号) View(df_list$`1521211800`)
如果你坚持想用sapply()
只需添加simplify = FALSE参数,强制它返回列表而不简化:
df_list <- sapply(fileList, read.csv, simplify = FALSE) # 之后的访问方式和上面一样
这样每个CSV文件都被保存为独立的数据框,你可以随时单独调取任意一个文件的数据啦!
内容的提问来源于stack exchange,提问作者ADITYA CHOURASIA
相关产品推荐
相关产品推荐

