Применить или цикл для нескольких переменных

У меня есть два списка дат, которые я хотел бы применить к своему коду (первая дата в xx и первая дата в yy, затем вторая дата в xx и вторая дата в yy и т. д.). (У меня есть небольшой список дат для примера). trade1 пуст, поэтому я ошибаюсь.

xx= c('2018-06-28','2018-07-27')
yy= c('2018-07-12','2018-08-13')

for (xx in seq_along(yy)) 
{
entry_trades = filter(aa2, Date == xx )%>%
          rename(entry_price = Price, entry_date = Date)
exit_trades = filter(aa2, Date == yy)%>%
         rename(exit_price = Price, exit_date = Date)
trade1 = merge(entry_trades, exit_trades,by='ticker')
trade1 = mutate(trade1, Chg = exit_price - entry_price,
            Chg_pct = round((Chg / entry_price)*100 ,1))%>%
arrange(desc(Chg_pct))
}

Не могли бы вы сделать вашу проблему воспроизводимой, поделившись образцом ваших данных, чтобы другие могли помочь (пожалуйста, не используйте str(), head() или снимки экрана)? Вы можете использовать пакеты reprex и datapasta, чтобы помочь вам в этом. См. Также Помогите мне Помогите вам и Как сделать отличный воспроизводимый пример R?.

Tung 26.10.2018 06:42

У вас есть вектор дат xx, но затем вы вызываете переменную цикла xx - теперь xx - это просто число вроде 1 или 2, и вы вообще не обращаетесь к исходному вектору дат внутри цикла. Используйте другое имя для переменной цикла.

Marius 26.10.2018 06:51
0
2
33
1

Ответы 1

for (i in seq_along(yy)) 
{
entry_trades = filter(aa2, Date == xx[i] )%>%
          rename(entry_price = Price, entry_date = Date)
exit_trades = filter(aa2, Date == yy[i])%>%
         rename(exit_price = Price, exit_date = Date)
trade1 = merge(entry_trades, exit_trades,by='ticker')
trade1 = mutate(trade1, Chg = exit_price - entry_price,
            Chg_pct = round((Chg / entry_price)*100 ,1))%>%
arrange(desc(Chg_pct))
}

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

Другие вопросы по теме