通过评估或类似因素影响变量

问题描述

我知道,如果我有一个a = "var.name"这样存储的变量名,我可以通过执行var.nameeval(as.symbol(a))调用get(a),但是我不想只调用一个变量,还要对其进行更改。示例:

names = c("X1","X2")
for(i in names){
    assign(i,cbind(replicate(2,rnorm(3))) #Just creating a 3x2 matrix with dummy data
    ###

在###处,我想更改变量,特别是将其列名更改为“ a”和“ b”。

我尝试了colnames(get(i)) = c("a","b")colnames(eval(as.symbol(i))) = c("a","b"),但它们返回了类似Could not find function "eval<-"错误

解决方法

一个选择可能是在第一步中创建矩阵,然后在第二步中命名并分配一个新名称。

names = c("X1","X2")
for(i in names){
  x <- cbind(replicate(2,rnorm(3))) 
  assign(i,provideDimnames(x))
}   

#--------------
> X1
            A          B
A -0.59174062  1.8527780
B -0.53088643 -3.2713544
C -0.09330006 -0.5977568


另一种选择是在创建矩阵时分配暗号。

for (i in names) {
  x <- matrix(replicate(2,rnorm(3)),ncol = 2,dimnames = list(a = c(LETTERS[1:3]),b = c(LETTERS[1:2])))
  
  assign(i,x)
}

#-------------------
> X1

   b
a            A           B
  A -0.2313692 -0.93161762
  B -0.9666849  0.06164904
  C  1.5614446 -0.09391062