【问题标题】:How to swap the names and values of a named vector in R?如何在 R 中交换命名向量的名称和值?
【发布时间】:2021-03-04 00:18:43
【问题描述】:

我有兴趣交换向量的名称和值

y <- c(a = "Apple", b = "Banana")

我希望代码创建相当于

y <- c(Apple = "a", Banana = "b")

我看到 searchable package 中有 invert 函数,但这似乎还没有针对 R 的第 4 版进行更新。

【问题讨论】:

  • 您可以安装searchable 包。请在下面查看我的解决方案
  • 后人注意:这个问题与向量级别的值的名称有关。在列级别,您将使用非常相似的解决方案,请参阅:stackoverflow.com/a/43337009/10952717 以获取有用信息

标签: r vector


【解决方案1】:

你可以使用:

setNames(names(y), y)
# Apple Banana 
#   "a"    "b" 

【讨论】:

    【解决方案2】:

    我们可以使用enframe/deframe

    library(tibble)
    enframe(y) %>% 
        select(2:1) %>% 
        deframe
    #  Apple Banana 
    #  "a"    "b" 
    

    可以从archive 安装软件包。下载工作目录下的tar文件,使用install.packageslocal = TRUE

    install.packages("searchable_0.3.3.1.tar.gz", local = TRUE)
    #inferring 'repos = NULL' from 'pkgs'
    #* installing *source* package ‘searchable’ ...
    #** package ‘searchable’ successfully unpacked and MD5 sums checked
    #** using staged installation
    #** R
    #** byte-compile and prepare package for lazy loading
    #** help
    #*** installing help indices
    #** building package indices
    #** testing if installed package can be loaded from temporary location
    #** testing if installed package can be loaded from final location
    #** testing if installed package keeps a record of temporary installation path
    #* DONE (searchable)
    

    现在,我们可以测试它了

    library(searchable)
    invert(y)
    #  Apple Banana 
    #   "a"    "b" 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 2020-05-12
      • 2016-08-23
      相关资源
      最近更新 更多