0

可能重复:
生成变量名(类似于 get())

如果我想以自动化的方式创建具有不同名称的矩阵,我会遇到问题。

例如,我想创建三个名为 a1、a2 和 a3 的矩阵。

 x<-1:3
 a<-"a"
 listofnames<-paste(a,x)  ## a vector with the names that I want to use for my matrices

我的问题是为矩阵分配与我创建的向量不同的名称。例如,要创建一个名为 a1 的矩阵(我的向量中的第一个“名称”),这当然根本不起作用:

 listofnames[1]<-matrix(ncol=2,nrow=2)

但是我该怎么做呢?

我一直在网上寻找但找不到任何答案..非常感谢您的帮助

4

2 回答 2

3

使用assign如下:

x<-1:3
a<-"a"
listofnames <-paste(a,x) 

set.seed(001)
for(i in 1:length(listofnames)){
  assign(listofnames[i], matrix(sample(9), ncol=3))
}


get(listofnames[1])
     [,1] [,2] [,3]
[1,]    3    6    8
[2,]    9    2    7
[3,]    5    4    1

get(listofnames[2])
     [,1] [,2] [,3]
[1,]    1    5    6
[2,]    2    7    3
[3,]    8    4    9

get(listofnames[3])
     [,1] [,2] [,3]
[1,]    4    2    5
[2,]    7    9    3
[3,]    8    1    6

将矩阵分配给其中包含的名称后,listofnames您可以使用get如上所示的函数进行访问。如果你只这样做listofnames[1]会给你名字listofnames而不是存储在那个名字下的元素,这样做你必须使用get(listofnames[1])

于 2012-10-30T16:19:17.343 回答
1

如果您确切地解释您要实现的目标可能会更好,但您可能还想探索assign()

x <- 1:3
a <- "a"
listofnames <- paste(a, x, sep="")
assign(listofnames[1], matrix(nrow = 2, ncol = 2))
a1
     [,1] [,2]
[1,]   NA   NA
[2,]   NA   NA
于 2012-10-30T16:17:06.517 回答