【问题标题】:R - Read multiple csv files from non-working directory into a listR - 从非工作目录中读取多个 csv 文件到列表中
【发布时间】:2019-11-13 16:20:24
【问题描述】:

我的桌面文件夹中有一组 .csv 文件(数据框),路径为:

path <- "C:\\User\\Desktop"

我想将文件读入一个列表,其中每个元素都是一个数据框。我尝试过使用以下内容:

tp <- list.files(path, pattern = "*.csv")
all_files = lapply(tp, read.delim)

问题是上面会假设我的文件在我的工作目录中——即当我尝试使用 path 时出现错误。我不想把它们放在那里。我发现的所有解决方案似乎都基于工作目录中的文件,即它们需要使用setwd()。我只想从任何不是工作目录的文件夹中加载我的文件。我的问题是:

  1. 如何将我的 .csv 数据帧从不是我的工作目录的文件夹中加载到列表中?我还想保持原始数据框的结构——即在列表中的每个数据框中保持相同数量的变量。

  2. 为什么将文件放在工作目录中如此重要?

我觉得这个问题有很多答案。任何帮助,将不胜感激。

【问题讨论】:

    标签: r list dataframe


    【解决方案1】:

    一种选择是在函数内部构建路径:

    tp <- list.files(path, pattern = "*.csv")
    all_files <- lapply(tp, function(x) read.delim(file.path(path,x)))
    

    另一种方法是使用完整路径:

    tp <- list.files(path, pattern = "*.csv", full.names = TRUE)
    all_files <- lapply(tp, read.delim)
    

    【讨论】:

    • 有没有一种方法可以保持原始数据框中的列?这仅给出 1 个变量
    • @jvalenti 那么你必须调整read.delim 的参数。也许是分隔符。
    • 使用all-files &lt;- lapply(tp, function(x) read.delim(x, header = T, sep = ","))
    • 这不是更简单吗? lapply(tp, read.csv, header = T)?
    • @Adam 我不知道 OP 想要达到什么目的
    猜你喜欢
    • 1970-01-01
    • 2021-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多