R矩阵:设置名称引用矩阵的单值

R Matrix: Set Single Value of name referenced matrix

我将矩阵存储在我创建的变量中,如果字符串通过 assign( name, matrix(...) ) 现在我想设置这个矩阵的单个值,提供它的名称、行和列以及新值。 我会这样想象它:

get(name, envir = my.env)[x,y] <- value

assign(paste(name,"[",x,",",y,"]"),value, envir = my.env)

但这两个选项都不行。有没有什么好的方法来解决矩阵的这一特定领域? 我目前的解决方法是首先将矩阵保存到一个变量,设置它的值并将矩阵设置回其原始变量。 在我看来,它是在此处复制矩阵,因为它会导致内存问题(矩阵非常大)。我显然更喜欢其他解决方案

通常我会使用 list,但您可以使用几乎相同的方式使用 environment

my.env <- new.env()
myname <- "mymat"
assign(myname, matrix(1:16, 4), envir = my.env)
my.env[[myname]][1, 1] <- 42
my.env[[myname]]
#     [,1] [,2] [,3] [,4]
#[1,]   42    5    9   13
#[2,]    2    6   10   14
#[3,]    3    7   11   15
#[4,]    4    8   12   16

尝试 eval:

my.env <- new.env()
name = 'd'
x = y = 1
assign(name, matrix(1:4, 2), envir=my.env)
eval(parse(text=paste(name, '[', x, ',', y, '] = ', value)), envir=my.env)
my.env[[name]]
#      [,1] [,2]
# [1,]    0    3
# [2,]    2    4