【发布时间】:2013-02-24 14:04:25
【问题描述】:
我正在尝试填充一组 矩阵(对象)名称保存在列表中的矩阵。我能 使用 get() 返回具有给定名称的对象,但我 当我使用 get() 定义矩阵时遇到函数问题 我正在尝试填充的对象。
#Create list of matrix names:
list.names <- c("m.1")
#Create matrix object
m.1 <- matrix(nrow=2,ncol=2)
#Return matrix m.1 from the list.names using get(). Works great!
get(list.names[1])
#Populate m.1 with some values. Doesn't work.
get(list.names[1]) <- c(1,2,3,4)
所以在最后一行代码中,我得到了一个错误:
找不到函数“get
同样,我可以使用以下方式调用 m.1:
eval(as.name(list.name[1]))
但当我尝试填充矩阵时,R 会返回类似的“找不到函数”错误。
有人可以在这里解释我的方法中的错误吗?
编辑/更新:
因此,在我尝试简化此处发布的问题时,我意识到我可能过于简化了我正在尝试做的事情。
所以,事实上,我正在尝试在一组矩阵中填充元素。矩阵的名称包含在 list.names 对象中。我正在使用嵌套的 for() 循环来填充矩阵中的每个元素。
所以,事实上,我的问题可以更准确地表述为:
get(list.names[1])[1,1] <- some_value
一些回复建议我根据我的原始帖子使用分配,但考虑到我正在尝试“分配”对象中的一个元素而不是整个对象,这种方法将不起作用。
很抱歉给您带来了困惑。
【问题讨论】:
-
我想你想要
assign,就像assign(get(list.names[1]), 1:4)一样。我无法解释具体细节,但解释听起来可能类似于:从get返回的对象没有错误所指示的赋值 (<-) 方法。所有这些都需要注意,您几乎不需要这种体操来达到类似的结果。在另一个问题中对此进行扩展可能会产生一些更好的答案、理解和代码。 -
@Justin 不完全是。是
get()没有赋值函数,而不是get()返回的对象。本质上没有'get<-'()函数,因此没有错误。解析器会看到这种结构并将其转换为对'get<-'(x = list.names[1], value = c(1,2,3,4))的调用,然后它甚至会评估参数,因此会出现关于没有函数"get<-"的错误。
标签: r