是否可以使用 R 中类似字典的对象将一个字符串映射到另一个字符串?

Bla*_*ard 5 dictionary r

我想使用 Python 中类似字典的对象将一个字符串映射到 R 中的另一个字符串。例如,在 Python 中,您可以定义一个字典来将一个字符串转换为另一个字符串,例如:

d = {"s": "Superlative", "d": "Dynamic", "f": "Furious"}
pd.apply(lambda x: d[x["map_column"]], axis=1)
Run Code Online (Sandbox Code Playgroud)

但是,在 R 中,如果您想基于此类映射将一列中的一组字符串转换为另一列,您最终会定义一个需要大量 的函数if else,例如:

mapper <- function(x) {
    if (x = "s") {
        return ("Superlative")
    } else if (x = "d") {
            return ("Dynamic")
    }...

    return("")
}
Run Code Online (Sandbox Code Playgroud)

但我不喜欢定义这么长很长的函数。那么是否可以定义一个字典,或者更具体地说,在 R 中用更少的一行(或两行)代码获得结果?

Mic*_*ths 4

如果您已经在使用tidyverse,那么这就是recodein 的用途dplyr。

df %>%
    mutate(LongName = recode(ShortName, 
                             s = "Superlative",
                             d = "Dynamic",
                             f = "Furious",
                             `multiple words` = "Use backticks to escape"
                             )
           ) ->
    df
Run Code Online (Sandbox Code Playgroud)