【问题标题】:assigning random or automatized names for e.g. matrices in R [duplicate]为例如分配随机或自动名称R中的矩阵[重复]
【发布时间】:2012-10-20 00:54:33
【问题描述】:

可能重复:
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)

但是我该怎么做呢?

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

【问题讨论】:

    标签: r


    【解决方案1】:

    使用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])

    【讨论】:

    • 您实际上不需要使用get,但由于名称不标准(a 1 -- 带空格),因此您需要使用`a 1` 来返回输出。
    • @mrdwab 你是对的。我的意思是 OP 在以这种方式调用矩阵时需要使用getlistofnames[1],如果他/她想要存储在名字中的数据,这只会给他/她包含在listofnames 中的名字在listofnames 他/她需要像get(listofnames[1]) 一样使用get,但如果OP 直接输入您评论中的名称,则不需要get
    • 啊。知道了。完整示例 +1。
    • 虽然这回答了 OP 的问题,但我仍然想强调我觉得使用 assign 不是最理想的。使用列表更方便,例如结合apply 样式循环。参见例如stackoverflow.com/questions/5319839/….
    【解决方案2】:

    如果您确切地解释您想要实现的目标可能会更好,但您可能还想探索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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-19
      • 2012-02-03
      • 2018-06-04
      相关资源
      最近更新 更多