Я думаю, что упускаю что-то простое, но у меня проблемы с доступом к элементам списка в lapply
.
Проблема: у меня есть несколько файлов на FTP, которые я хочу загрузить и прочитать. Поэтому мне нужно указать местоположение, загрузить их и прочитать. Все, что, по моему мнению, лучше всего можно обработать с помощью нескольких списков, но я не могу заставить его работать в моей функции.
Я хотел бы иметь возможность начать с вызова lapply(lst,...)
, потому что мне нужно как имя переменной (a)
, так и URL-адрес в одной и той же функции, чтобы легко загружать и называть их.
Пример кода:
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[[]]
выдает ошибку, это просто для иллюстрации того, что я хотел бы получить.
[[]]
, которыйlapply()
не нужен. Тогда это работает? - person Stephan Kolassa   schedule 29.07.2014$a
, а затемurl
, мне нужен конкретно элемент списка[[1]]
. Итак, толькоurl
, иначе я не могу его использовать. - person Thorst   schedule 29.07.2014rapply
илиsapply
, то естьrapply(lst, print)
, но это добавляет дополнительную строку в конце - person David Arenburg   schedule 29.07.2014lapply(lst, function(x) { cat('Processing url:',x,'\n'); download.file(url = x, destfile = paste0(lok, paste0(names(x), ".csv")),quiet = FALSE) } )
- person Silence Dogood   schedule 29.07.2014lapply(lst,print)
? - person Matt Bannert   schedule 29.07.2014lst[1]
, а неlst[[1]]
. Мне нужен последний, потому что мне нужно использовать его в качестве URL-адреса. Не сказать, что это оптимальное решение :) - person Thorst   schedule 29.07.2014