【问题标题】:Defining names of list elements定义列表元素的名称
【发布时间】:2021-06-23 07:19:51
【问题描述】:

让我们考虑一下列表中元素的名称向量:

name_vec <- c("name", "of", "the", "list", "elements")

此向量包含列表元素的名称。让我们定义一个空列表并用来自name_vec的元素命名每个元素

my_list <- list()

for (i in seq_len(length(name_vec))) { 
  my_list[[name_vec[i]]] <- i+1
}

但是,由于使用了循环,我发现此解决方案效率非常低。我认为这必须是某种避免它的方法,但我不知道。试图用lapply 做点什么,但它让我一无所获。你有什么想法可以做到吗?

【问题讨论】:

    标签: r list loops vector naming


    【解决方案1】:

    一个选项可能是:

    as.list(setNames(seq_along(name_vec) + 1, name_vec))
    
    $name
    [1] 2
    
    $of
    [1] 3
    
    $the
    [1] 4
    
    $list
    [1] 5
    
    $elements
    [1] 6
    

    结果是一样的:

    identical(my_list, as.list(setNames(seq_along(name_vec) + 1, name_vec)))
    
    [1] TRUE
    

    【讨论】:

    • 或者setNames(as.list(seq_along(name_vec) + 1), name_vec),交换as.listsetNames,结果也一样。
    猜你喜欢
    • 2014-04-09
    • 2011-07-27
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    • 2016-06-22
    • 2023-03-03
    相关资源
    最近更新 更多