【问题标题】:Rename multiple datasets in R在 R 中重命名多个数据集
【发布时间】:2018-12-21 02:11:00
【问题描述】:

我在 R 中加载了近 400 个数据帧。但名称仍然具有 .csv 扩展名。

我用这段代码读取数据

Files <- list.files(pattern="\\.csv$")

for (i in 1:length(Files)){
  assign(Files[i], 
         read.csv(Files[i], 
                  sep = ";", 
                  header = T))
}

有没有办法在导入数据集时删除 .cvs 扩展名?

非常感谢!

【问题讨论】:

  • 不是答案,但请不要这样做。将数据框存储在列表中,而不是在全局命名空间中存储为 400 个单独的对象。如果以后需要,您可以使用字符串操作来删除名称,但不要执行您在此处执行的操作。

标签: r dataframe rstudio rename


【解决方案1】:

这是一种不使用assign 的方法,这可能是更好的做法。您可以将文件名保留为列表的元素名称。

library(tidyverse)
files <- list.files(pattern="\\.csv$")

df_list <- map(files, read_csv2)
names(df_list) <- str_remove(files, "\\.csv$")

【讨论】:

  • 请你解释一下为什么上面的做法比使用 assign 更好?
  • assign 会将数据帧放入全局环境中,这很容易被代码的其他部分修改,并可能覆盖现有对象。您也不能轻松地遍历数据帧。当您的对象有一些结构时,将它们放入数据结构中
【解决方案2】:

试试这个:

Files <- list.files(pattern="\\.csv$")
for (i in 1:length(Files)){
  assign(gsub("\\..*","",Files)[i], # replace your this line of code
         read.csv(Files[i], 
                  sep = ";", 
                  header = T))
}

【讨论】:

    【解决方案3】:

    您可能需要添加一个额外的gsub 步骤:

    Files <- list.files(pattern="\\.csv$")
    File.name <- gsub("\\.csv$", "", Files)
    for (i in 1:length(Files)){
      assign(File.name[i], 
             read.csv(Files[i], 
                      sep = ";", 
                      header = T))
    }
    

    【讨论】:

      猜你喜欢
      • 2021-03-16
      • 1970-01-01
      • 2017-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      • 2016-12-15
      • 1970-01-01
      相关资源
      最近更新 更多