这篇文章(在R中的懒惰评估是指派受影响吗?)涵盖了一些共同点,但我不确定它是否回答了我的问题.
我assign在apply很久以前发现这个家庭的时候就停止了使用,虽然,纯粹出于以下情况的优雅原因:
names.foo <- letters
values.foo <- LETTERS
for (i in 1:length(names.foo))
assign(names.foo[i], paste("This is: ", values.foo[i]))
Run Code Online (Sandbox Code Playgroud)
可以替换为:
foo <- lapply(X=values.foo, FUN=function (k) paste("This is :", k))
names(foo) <- names.foo
Run Code Online (Sandbox Code Playgroud)
这也是本(其理由http://cran.r-project.org/doc/FAQ/R-FAQ.html#How-can-I-turn-a-string-into-a-variable_003f)R-FAQ说这应该避免.
现在,我知道这assign通常是不受欢迎的.但还有其他原因我不知道吗?我怀疑它可能会与范围或懒惰的评估混乱,但我不确定?演示此类问题的示例代码将非常棒.
我正在使用quantmod包从Yahoo导入金融系列数据.
library(quantmod)
getSymbols("^GSPC")
[1] "GSPC"
Run Code Online (Sandbox Code Playgroud)
我想将对象"GSPC"的名称更改为"SPX".我在reshape包中尝试了重命名功能,但它只更改了变量名."GSPC"对象有向量GSPC.Open,GSPC.High等.我想将"GSPC"重命名为"SPX",也将GSPC.Open改为SPX.Open等.