Give name to list variable

前端 未结 3 762
無奈伤痛
無奈伤痛 2020-12-06 06:37

so we know that R have list() variable, and also know that R has function call names() to give names for variable. For example :

a=         


        
相关标签:
3条回答
  • 2020-12-06 07:22

    Other possibilities are

    as.list(a)
    # $`number`
    # [1] 30
    
    # or
    setNames(list(unname(a)),'number')
    # $`number`
    # [1] 30
    
    # or named list with named vector
    setNames(list(a), 'number')
    # $`number`
    # number 
    # 30
    
    0 讨论(0)
  • 2020-12-06 07:29

    Since @akrun doesn't need any more points, here is an example showing how you can assign names to a list:

    lst <- list(a="one", b="two", c=c(1:3))
    names(lst)
    [1] "a" "b" "c"
    names(lst) <- c("x", "y", "z")
    
    > lst
    $x
    [1] "one"
    
    $y
    [1] "two"
    
    $z
    [1] 1 2 3
    
    0 讨论(0)
  • 2020-12-06 07:44

    It seems as though you are interested in labeling the object itself rather than the elements in it. The key is that the names attribute for a list object is necessarily assigned to its elements. One option, since you said you have many list objects, is to store the lists in a big list and then you can assign names to the big list, and the elements within the list-objects can be named too.

    allLists <- list('number' = list())
    
    > allLists
    $number
    list()
    

    Another option, you can make use of the label feature in the Hmisc package. It modifies most common objects in R to have a subclass "labelled" and so whenever you print the list it shows the label. It is good for documentation and organizing the workspace a bit better, but caveat it's very easy to accidentally cast labelled objects to a non-labelled class and to confuse methods that don't think to search for more than one class.

    library(Hmisc)
    p <- list()
    label(p) <- 'number'
    
    > p
    number
    list()
    

    Another option is to make the "name" of your list object an actual element of the list. You'll see in a lot of complex R data structures, this is the preferred way of storing labels, titles, or names when such a need arises and isn't met by the base R data structure.

    b <- list('name' = 'number')
    

    The last possibility is that you need a placeholder to store the "names" attribute of the elements you haven't yet populated the list with. If the elements are of known length and of known type, you can allocate such a vector using e.g. numeric(1) a sort-of "primed" vector which can be named. If you don't know the data structure of your output, I would not use this approach since it can be a real memory hog to "build" data structures in R.

    0 讨论(0)
提交回复
热议问题