2013-04-29 21 views
4

Рассмотрим следующий пример:использованием применяются правопреемника в R

Vars <- c("car","bike","lorry") 
Dat <- c(10,20,22) 

for (i in 1:length(Vars)){ 
    assign(Vars[i],Dat[i]) 
} 

Здесь я хотел бы, чтобы генерировать три переменные в рабочем пространстве имени в соответствии с записями в Vars и значения в Dat. На данный момент я использую цикл, но я пытаюсь удалить цикл с помощью apply, как бы лучший способ сделать это?

+3

Почему вы хотите удалить цикл, если он работает для вас ? – A5C1D2H2I1M1N2O1R2T1

+0

Это включено как часть гораздо большего скрипта, который управляется циклом for, поэтому я пытался удалить этот второй цикл, думая, что это будет лучше программировать. – KatyB

+0

Из нижеприведенного ответа я вижу, что в этом случае цикл может быть лучше, он кажется более читаемым, чем использование mapply, спасибо за ваши комментарии. – KatyB

ответ

6

Это отличный пример того, когда следует использовать цикл for вместо apply.
Лучшее решение - оставить его как есть.

, если вы действительно хотите использовать *ply петлю, используйте mapply

mapply(assign, Vars, Dat, MoreArgs=list(envir=parent.frame())) 
2

Вы также можете использовать attach, например:

attach(as.list(setNames(Dat,Vars))) 
Смежные вопросы