R 从多个csv文件导入数据集时出现问题

R 从多个csv文件导入数据集时出现问题,r,loops,for-loop,R,Loops,For Loop,我目前在Rstudio中遇到了麻烦,无法从多个数据集中输出新的数据集,并且无法让它们相互替换。我最初在导入多个数据集时遇到了问题,并且能够通过 dataFiles <- Sys.glob("*.csv") dataFiles我们可以使用注释中建议的lappy(),它将返回一个列表 Data <- lapply(dataFiles, read.csv) 如果我们希望元素单独出现在全局环境中,我们可以使用list2env() 如果我们想将其全部打包成一个函数,我们可以: import

我目前在Rstudio中遇到了麻烦,无法从多个数据集中输出新的数据集,并且无法让它们相互替换。我最初在导入多个数据集时遇到了问题,并且能够通过

dataFiles <- Sys.glob("*.csv")
dataFiles我们可以使用注释中建议的
lappy()
,它将返回一个列表

Data <- lapply(dataFiles, read.csv)
如果我们希望元素单独出现在全局环境中,我们可以使用
list2env()

如果我们想将其全部打包成一个函数,我们可以:

importCsv <- function(x) {
  Data <- setNames(lapply(x, read.csv), sub("*.csv", "", x))
  return(list2env(Data, globalenv()))
}

importsv欢迎使用堆栈溢出!拜托,这一次我很关心。你把图形导出为PDF的部分在哪里?
dataFiles
只是一个文件名向量,你还没有真正“导入”文件。您可以使用
data\u list将所有单个数据集存储在一个列表中。如果在for循环中添加
print(file)
作为第一条语句,您可以看到发生了什么。请注意如何打印所有文件名。更重要的是,您正在用下一个数据覆盖每个导入的data.frame。如果在心里一直运行此循环直到结束,您会注意到只剩下最后一个data.frame,因为没有下一个数据.frame覆盖它。马吕斯的解决方案非常优雅,但你可以在循环之前初始化一个列表,然后将
数据[[file]]]
分配给它。可能的重复可以使用
tools::file\u path\u sans\u ext
删除文件扩展名。在大多数情况下,我建议将data.frames保存在一个列表中,然后您可以再次
lappy
为每个集合创建绘图。所以
Data@Axeman啊,是的,你是对的,这简化了很多,谢谢你指出这一点。如果你不介意的话,我已经把你的建议包括在我的答案里了。
names(Data) <- sub("*.csv", "", dataFiles)
names(Data) <- tools::file_path_sans_ext(dataFiles)
list2env(Data, globalenv())
importCsv <- function(x) {
  Data <- setNames(lapply(x, read.csv), sub("*.csv", "", x))
  return(list2env(Data, globalenv()))
}