Если ваше намерение состоит в том, чтобы (1) сохранить выходные данные (с writeBin
) и (2), вернуть значения (в list
), тогда попробуйте следующее:
out <- Map(function(ln, bn) {
site <- html_session(URLencode(
paste0("https://example.com", ln)),
config(ssl_verifypeer = FALSE))
writeBin(site$response$content, bn)
site$response$content
}, links, base_names)
Использование Map
"застегивает" вместе отдельные элементы.Для базового случая следующее идентично:
Map(myfunc, list1)
lapply(list1, myfunc)
Но если вы хотите использовать элементы с одинаковым индексом из нескольких списков, вы можете сделать один из
lapply(seq_len(length(list1)), function(i) myfunc(list1[i], list2[i], list3[i]))
Map(myfunc, list1, list2, list3)
, где развертываниеMap
эффективно приводит к:
myfunc(list1[1], list2[1], list3[1])
myfunc(list1[2], list2[2], list3[2])
# ...
Самое большое различие между lapply
и Map
в том, что lapply
может принимать только один вектор, тогда как Map
принимает один или более (практически неограниченно), объединяя их вместе.Все используемые списки должны иметь одинаковую длину или длину 1 (переработано), поэтому допустимо сделать что-то вроде
Map(myfunc, list1, list2, "constant string")
Примечание: Map
-versus- mapply
аналогично lapply
* 1031-vs *.Для обоих первых всегда возвращает объект list
, в то время как вторые возвращают vector
IFF, каждое возвращаемое значение имеет одинаковую длину / размерность, в противном случае оно также возвращает list
.