如何为在R中使用assign()创建的矩阵赋值 m
我有点不好意思发布这篇文章,但是有办法做到这一点。这感觉非常错误,因为R方法是建立一个矩阵列表,然后通过传递一个函数来使用lappy对其进行转换来对其进行操作如何为在R中使用assign()创建的矩阵赋值 m,r,assign,R,Assign,我有点不好意思发布这篇文章,但是有办法做到这一点。这感觉非常错误,因为R方法是建立一个矩阵列表,然后通过传递一个函数来使用lappy对其进行转换来对其进行操作 m <- "mData" assign(m, matrix(data = NA, nrow = 4, ncol = 5)) assign.by.char如果确实需要使用assign(),可以使用replace() m或者您可以直接使用assign(@bondedust解决方案的变体) assign(m`[为什么不跳过中间人,直接转
m <- "mData"
assign(m, matrix(data = NA, nrow = 4, ncol = 5))
assign.by.char如果确实需要使用assign()
,可以使用replace()
m或者您可以直接使用assign
(@bondedust解决方案的变体)
assign(m`[为什么不跳过中间人,直接转到m?还有一个循环围绕着这些行。因此,m随着每个循环而变化。每个循环中要分配的值也不同。结果将是许多矩阵具有不同的名称。这确实是走错了路,但您可以将名称收集到vector和cr中使用mget
创建一个矩阵列表。然后使用lappy
对它们应用适当的函数。真是我感到惭愧。你的代码运行得很好。谢谢!但我对“eval.parent()”和“[[
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
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(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'