R lapply,访问列表的元素

时间:2014-07-29 07:41:58

标签: r lapply

我认为我遗漏了一些简单的内容,但我在lapply中访问列表元素时遇到了问题。

问题:我想要下载和阅读的FTP上有很多文件。所以我需要指定位置,下载并阅读它们。所有我认为可以通过一些列表处理得最好,但我无法真正让它在我的函数中工作。

我希望能够从调用lapply(lst,...)开始,因为我需要变量名称(a)和同一功能中的网址,以便下载&轻松命名。

代码示例:

a <- "ftp://user:pass@url_A1" 
b <- "ftp://user:pass@url_B1" 
c <- "ftp://user:pass@url_C1" 
d <- "ftp://user:pass@url_D1"

lst <- list(a, b, c, d)
names(lst) <- c("a", "b", "c", "d")

期望的目标:

print(lst[[1]]), ...., print(lst[[4]])

我尝试了什么:

lapply(lst, 
function(x) print(x[[]]) 
)

# Error!

我的真实代码看起来更像是:

lapply(lst, 
       function(x) download.file(url = x[[]], # Error!  
                               destfile = paste0(lok, paste0(names(x), ".csv")),
                               quiet = FALSE)
      )

编辑:

我知道x[[]]会引发错误,这只是为了说明我想要得到的内容。

1 个答案:

答案 0 :(得分:1)

未测试:

lapply(names(lst),function(x){
download.file(url = lst[[x]],
destfile = paste0(lok,paste0(x,".csv")),
quiet = FALSE)
}

这应该在lok被定义的情况下起作用。