归志宁无五亩园,读书本意在元元。这篇文章主要讲述使用循环或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)))
}
推荐阅读
- Matlab - AppDesigner(使用GUI中断循环)
- 如何从Delphi Android应用程序启动视频通话()
- R(试图理解逻辑以用lapply()替换循环)
- JSON Web Token教程(Laravel和AngularJS中的示例)
- 使用AngularJS和Play框架构建现代Web应用程序
- 使用Spring框架构建MVC应用程序(初学者教程)
- Gulp的JavaScript自动化简介
- 这些年来,世界仍然由C编程提供动力
- 使用Angular Material构建超现代的Web应用