【问题标题】:Is there a way to append to each vector element with the respective name of list element?有没有办法用列表元素的相应名称附加到每个向量元素?
【发布时间】:2022-01-22 13:49:31
【问题描述】:

这是我的向量列表。

j = list(x = c('apple', 'avocado'), y = c('banana', 'beetroot'))

这是j的内容。

$x
[1] "apple"   "avocado"

$y
[1] "banana"   "beetroot"

这是所需的输出。

$x
[1] "x_apple"   "x_avocado"

$y
[1] "y_banana"   "y_beetroot"

【问题讨论】:

    标签: r tidyverse


    【解决方案1】:

    在base R中,你可以使用Map -

    Map(function(x, y) paste(x, y, sep = '_'), names(j), j)
    
    #$x
    #[1] "x_apple"   "x_avocado"
    
    #$y
    #[1] "y_banana"   "y_beetroot"
    

    【讨论】:

    • 您甚至可以将参数直接传递给Map - Map(paste, names(j), j, sep="_")
    【解决方案2】:

    你可以使用purrr::imap():

    library(purrr)
    imap(j, ~ paste0(.y, "_", .x))
    

    输出

    $x
    [1] "x_apple"   "x_avocado"
    
    $y
    [1] "y_banana"   "y_beetroot"
    

    imap() 中的“i”表示索引,方便您将向量的元素及其名称传递给函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 2021-10-04
      • 2018-08-24
      相关资源
      最近更新 更多