如何为在 R 中使用 assign() 创建的矩阵赋值

How to assign a value to a matrix created with assign() in R

m <- "mData"
assign(m, matrix(data = NA, nrow = 4, ncol = 5))

现在我想使用变量 m 为 mData 矩阵赋值

assign(m[1, 2], 35) 将不起作用。

任何解决方案将不胜感激?

我有点不好意思 post 这个,但有办法做到这一点。感觉很不对劲,因为 R 方法是构建一个矩阵列表,然后通过传递一个函数对它们进行操作,使用 lapply.

对它们进行转换
assign.by.char <- function(x,  ...) {
   eval.parent(assign(x,  do.call(`[<-`, list(get(x) , ...)))) }

assign.by.char(m, 1,2,35)
     [,1] [,2] [,3] [,4] [,5]
[1,]   NA   35   NA   NA   NA
[2,]   NA   NA   NA   NA   NA
[3,]   NA   NA   NA   NA   NA
[4,]   NA   NA   NA   NA   NA

如果你真的需要使用assign(),你可以使用replace()

m <- matrix(, 3, 3)
assign("m", replace(m, cbind(1, 2), 35))
m
#      [,1] [,2] [,3]
# [1,]   NA   35   NA
# [2,]   NA   NA   NA
# [3,]   NA   NA   NA

或者您可以直接使用 assign(@BondedDust 解决方案的变体)

 assign(m, `[<-`(get(m), cbind(1,2), 35))
 mData
 #     [,1] [,2] [,3]
 #[1,]   NA   35   NA
 #[2,]   NA   NA   NA
 #[3,]   NA   NA   NA

或作为函数

assign.by.char <- function(x, ...){
  eval.parent(assign(x, `[<-`(get(x), ...)))}

数据

mData <- matrix(, 3, 3)
 m <- 'mData'