2016-08-11 2 views
5

Я пытаюсь использовать map() для применения функции quandl к массиву (n x 1) строк. (http://quandljl.readthedocs.io/en/latest/get_data.html)Julia: Передача аргументов ключевого слова для функции через функцию map()

Однако, я хочу передать больше, чем просто строки в качестве аргументов функции, такие как from = Date1 и to = Date2. Я не могу найти способ, чтобы map() применял функцию к массиву строк, а также передавал аргументы ключевого слова для загрузки данных от Date1 до Date2.

Более общий вопрос: как я могу использовать map(), чтобы применить функцию к нескольким элементам, а также передать дополнительные аргументы этой функции?

+2

См. Также этот связанный пост http://stackoverflow.com/questions/38853197/can-i-use-map-with-fixed-input/38853852#38853852 –

ответ

13

Вы хотите создать анонимную функцию, которая вызывает quandl с соответствующими аргументами и сопоставляет их по вашим данным. Поскольку я немного не понимаю, как вы хотите позвонить quandl, я просто воспользуюсь составленным примером. Предположим, что f принимает два позиционных аргумента и ключевое слово k; предположим, что вы хотите применить его к каждому значению v с 2 в качестве второго аргумента и k = "abc". Вы бы сделать это так:

map(x -> f(x, 2, k = "abc"), v) 

Если анонимная функция тела является большим или сложным, вы можете использовать Джулии do-block syntax и писать вычисления, как это вместо:

map(v) do x 
    f(x, 2, k = "abc") 
end 

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

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