如何为在 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'
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'