如果我想以自动化的方式创建具有不同名称的矩阵,我会遇到问题。
例如,我想创建三个名为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)
但是我该怎么做?
我一直在网上看,但找不到任何答案.. 非常感谢你的帮助
答案 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