【问题标题】:Use filename as list name using lapply and read_xls使用 lapply 和 read_xls 将文件名用作列表名称
【发布时间】:2018-08-20 08:56:16
【问题描述】:

我正在使用lapply 从一个目录中读取多个.xls 文件。由于数据表示从文件名给出的不同 ID 的站点收集的数据,我想将列表名称设置为每个文件的文件名。

我目前正在做以下事情:

library(readxl)

# Set filepath
file_location="FILEPATH"
# List all files within folder
filenames=list.files(file_location, pattern="^ID.*xls",full.names = T) 
# Import all files
import_data=lapply(filenames, function(x) read_xls(x, col_names = T)) 

然后我可以运行这样的东西:

filenames_short=gsub(".xls", "", x=list.files(file_location, pattern="^ID.*xls",full.names = F))
names(import_data)=filenames_short

但是,我悲观的自我告诉我,文件名的顺序可能与列表的顺序不匹配。肯定有办法在原始命令中设置它吗?

【问题讨论】:

  • 你太悲观了。
  • 你可能是对的,@jogo。希望有一个更优雅的解决方案。

标签: r list filenames lapply


【解决方案1】:

我同意@jogo,但如果这会产生不安全感,您可以返回带有文件名的表格。

一种选择是向表中添加一个属性:

import_data=lapply(filenames, function(x) {
                   out <- read_xls(x, col_names = T)
                   attr(out, "file") <- x
                   return(out)
                   }) 

另一个是返回一个列表,其中表是一个对象并且它已经被命名。

import_data=lapply(filenames, function(x) {
                   out <- list(read_xls(x, col_names = T))
                   names(out) <- gsub(".xls", "", x)
                   return(out)
                   }) 

【讨论】:

    猜你喜欢
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    相关资源
    最近更新 更多