2014-07-29 2 views
0

Я думаю, что мне не хватает чего-то простого, но у меня возникают проблемы с доступом к элементам списка, в lapply.R lapply, элементы доступа к списку

Проблема: У меня есть несколько файлов на FTP, которые я хочу загрузить и прочитать. Поэтому мне нужно указать местоположение, загрузить их и прочитать их. Все, что я думал, может быть лучше всего обработано несколькими списками, но я не могу заставить его работать в моей функции.

Я хотел бы быть в состоянии начать с вызова lapply(lst,...), потому что мне нужно как имя переменной (a) и URL в одной и той же функции, чтобы загрузить & имя их легко.

код-пример:

a <- "ftp://user:[email protected]_A1" 
b <- "ftp://user:[email protected]_B1" 
c <- "ftp://user:[email protected]_C1" 
d <- "ftp://user:[email protected]_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) 
    ) 

EDIT:

Я знаю, что x[[]] выдает ошибку, просто чтобы показать, что я хотел бы получить.

+0

Сначала удалите символ '' [[]] '', который 'lapply()' не нужен. Так ли это работает? –

+0

Если я их удалю, он печатает '$ a', а затем' url', мне нужен элемент списка '[[1]]' конкретно. Итак, просто «url», иначе я не смогу его использовать. – NoThanks

+0

Возможно, вы можете использовать 'rapply' или' sapply', то есть 'rapply (lst, print)', но добавляет некоторую дополнительную строку в конце –

ответ

1

Непроверенные:

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

Это должно срабатывать, lok определяется.

Смежные вопросы