为例如指定随机或自动化名称R中的矩阵

时间:2012-10-30 16:08:48

标签: r

  

可能重复:
  generate variable names (something like 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)

但是我该怎么做?

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

2 个答案:

答案 0 :(得分: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])

答案 1 :(得分: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