【发布时间】:2013-07-07 17:14:57
【问题描述】:
这篇文章 (Lazy evaluation in R – is assign affected?) 涵盖了一些共同点,但我不确定它是否能回答我的问题。
当我很久以前发现apply 家族时,我停止使用assign,尽管纯粹是出于在这种情况下优雅的原因:
names.foo <- letters
values.foo <- LETTERS
for (i in 1:length(names.foo))
assign(names.foo[i], paste("This is: ", values.foo[i]))
可以替换为:
foo <- lapply(X=values.foo, FUN=function (k) paste("This is :", k))
names(foo) <- names.foo
这也是这个 (http://cran.r-project.org/doc/FAQ/R-FAQ.html#How-can-I-turn-a-string-into-a-variable_003f) R-faq 说应该避免这种情况的原因。
现在,我知道assign 通常不受欢迎。但是还有其他我不知道的原因吗?我怀疑它可能会影响范围界定或惰性评估,但我不确定?演示此类问题的示例代码会很棒。
【问题讨论】: