使用循环或lapply来读取和命名文件

归志宁无五亩园,读书本意在元元。这篇文章主要讲述使用循环或lapply来读取和命名文件相关的知识,希望能为你提供帮助。
我是R的初学者,所以我的问题可能非常基础。我尽我所能搜索了这个问题的答案,但我找不到我需要的东西。
我有几个文件包含从每个州收集的数据。我目前的文件标题为“ALTable.csv”,“DETable.csv”等。
我想将这些文件读入程序并将内容保存在命名数据框中。然后,我想继续对这些数据帧执行操作,并使用它们构建由旧数据帧计算填充的新数据帧。
我目前有很多代码行,例如

AL < - read.csv("ALTable.csv") DE < - read.csv("DETable.csv")

我试图避免为每个州单独执行此命令。我能够找出如何告诉R制作相关文件的列表以及如何加载它们,但我不知道如何告诉R制作这些文件的列表,读取它们并将它们保存为命名数据框。
类似地,在我拥有这些数据帧之后,我正在使用这些帧执行计算并创建填充了这些计算的新数据帧。我有像这样的台词
MuAL < - AL$prop/AL$pop MuDE < - DE$prop/DE$pop

我想执行这些计算并使用给定的名称保存结果,而不必为每个单独的状态执行此操作。
理想情况下,我可以简单地列出所有缩写的单个列表,并在每个代码行中出现单个状态,插入状态缩写所在的占位符,并创建一个遍历列表的for循环并插入占位符的缩写。但是,我不知道如何做到这一点,除了最天真的方式,这是行不通的。
答案如果你有一个abrevations列表并且所有csv文件确实以相同的方式命名,你可以使用lapply生成一个dataframe列表。
就像是:
abbr< - c("AL","DE") name(abbr)< -abbr listofDF < - lapply(abbr,function(ab)read.csv(paste0(ab,"Table.csv"))

然后你应该能够做muAL < - listofDF$AL$prop/listofDF$AL$pop,或者即使你想为所有缩写做到这一点:
mu < - lapply(litofDF,function(i)i$prop/i$pop)

在这里mu$AL将存储相当于你的MuAL
也许你可以提供一些有助于找到一个好解决方案的数据样本。
另一答案【使用循环或lapply来读取和命名文件】首先将所有要加载的.csv文件放在某个文件夹中(在本例中为我们命名文件夹data)。然后,您的工作目录必须设置为此文件夹的父目录。然后,您可以从此目录加载所有文件,如下所示:
for (file in dir('data/')) { assign(substr(file, 1, 2), read.csv(paste0('data/', file))) }


    推荐阅读