【发布时间】:2018-10-08 22:14:31
【问题描述】:
我试图了解使用 assign() 和 get() 的不同陷阱。 get() 将以不同方式评估看似相同的对象的一个示例如下所示。 首先,我将字符串“This is: ALPHABET”分配给 names.foo 的元素
names.foo <- letters
values.foo <- LETTERS
for (i in 1:length(names.foo)){
assign(names.foo[i], paste("This is: ", values.foo[i]))
}
当我运行 get('names.foo') 时,我得到了预期的原始向量
get('names.foo')
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
但是当我运行 get(names.foo)(与上面相同但不带引号的命令)时,我得到的似乎是 for 循环中分配给向量 names.foo 的第一个元素的值。
get(names.foo)
[1] "This is: A"
这是否意味着在 for 循环中分配的第一个元素也具有名称 names.foo ? get() 在这两种情况下到底有什么不同?
【问题讨论】:
-
assign(names.foo[i], paste("This is: ", values.foo[i])),您正在做类似a <- 'This is: a'; b <- 'This is: b'; ...的事情。通过get(names.foo),您实际上只获得了名为names.foo的第一个值的变量,即get('a')。
标签: r variables naming-conventions