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
我将矩阵存储在我创建的变量中,如果字符串通过
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