使用循环或lapply来读取和命名文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用循环或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
。
也许你可以提供一些有助于找到一个好解决方案的数据样本。
首先将所有要加载的.csv
文件放在某个文件夹中(在本例中为我们命名文件夹data
)。然后,您的工作目录必须设置为此文件夹的父目录。然后,您可以从此目录加载所有文件,如下所示:
for (file in dir('data/')) {
assign(substr(file, 1, 2), read.csv(paste0('data/', file)))
}
以上是关于使用循环或lapply来读取和命名文件的主要内容,如果未能解决你的问题,请参考以下文章
使用lapply或for循环将多个csv文件拉入自己的R数据帧