2013-04-29 68 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 2013-04-29 10:47:13

+0

這是作爲一個更大的腳本的一部分,它是由for循環驅動的,所以我試圖刪除第二個循環,認爲這會更好的編程實踐。 – KatyB 2013-04-29 10:55:15

+0

從下面的答案我看到,在這種情況下循環可能會更好,它似乎比使用mapply更可讀,感謝您的意見。 – KatyB 2013-04-29 11:00:43

回答

6

這是使用for循環代替apply的一個很好的例子。
最好的解決方案是讓它保持原樣。

,如果你真的想用一個*ply循環,使用mapply

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

您還可以使用attach例如:

attach(as.list(setNames(Dat,Vars)))