【发布时间】:2018-08-29 22:18:14
【问题描述】:
TLDR:如何从列表中获取 nth 元素以将其用作函数的输入。
我每天在邮件中收到三个不同的 excel 文件:Ayyyymmdd.xls、Byyyymmdd.xls 和 Cyyyymmdd.xls(文件名每天都在变化;“yyyy”是年份,“mm" 是月份,"dd" 是天)。
我需要在 R 中读取这些文件。为此,我创建了一个根据今天的日期更改的列表。今天的名单如下:
files <- as.list(c("A20180829.xls", "B20180829.xls", "C20180829.xls")
我现在需要分别阅读所有三个文件(使用lapply 有效,但我想一次只引用一个元素)。不幸的是,以下命令不起作用:
Atoday <- read.xls(files[1], sheet = 1) # Doesn't work
Atoday <- read.xls("A20180829.xls", sheet = 1) # Works
我主要关心的是如何从列表中获取 nth 元素以将其用作函数的输入。该函数不需要是read.xls,我只关心它可以是read.csv()、fread()等。
【问题讨论】:
-
读一读list-of-frames:
alldat <- sapply(files, read.xls, sheet=1, simplify=FALSE) -
lapply或sapply将执行此操作,在整个列表上迭代应用命令。 -
但这正是
lapply的用途:“从列表中取出第n 个元素以将其用作函数的输入”。 “使用lapply有效,但我想一次只引用一个元素” 是什么意思?lapply一次只引用一个元素。我看不出你有任何理由不使用lapply。 -
哦,我的意思是我特别不想使用“lapply”。我想找到一种方法来引用列表中的一个参数。例如,我不想读取所有文件,而是想知道如何读取第 20 个文件。
-
read.xls(files[1], ...)不起作用的唯一原因是因为 you needfiles[[1]to index into a list。 (而不是仅仅用“不起作用”来发布它,你应该尝试找出原因并修复它......)
标签: r