Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用R中类似字典的对象将一个字符串映射到另一个字符串?_R_Dictionary - Fatal编程技术网

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

是否可以使用R中类似字典的对象将一个字符串映射到另一个字符串?,r,dictionary,R,Dictionary,我想使用Python中类似字典的对象将R中的一个字符串映射到另一个字符串。例如,在Python中,可以定义一个字典来将一个字符串转换为另一个字符串,如: d = {"s": "Superlative", "d": "Dynamic", "f": "Furious"} pd.apply(lambda x: d[x["map_column"]], axis=1) 但是,在R中,如果您希望基于这种映射将一列中的一组字符串转换为另一列,那么您将最终定义一个函数,该函数需要花费大量的,如果else,例如

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

d = {"s": "Superlative", "d": "Dynamic", "f": "Furious"}
pd.apply(lambda x: d[x["map_column"]], axis=1)
但是,在R中,如果您希望基于这种映射将一列中的一组字符串转换为另一列,那么您将最终定义一个函数,该函数需要花费大量的
,如果else
,例如:

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

    return("")
}

mapper您可以将环境用作哈希表:

dict <- new.env(hash = TRUE, parent = emptyenv(), size = NA)
## insert into hash table
dict[["s"]] <- "Superlative"
dict[["d"]] <- "Dynamic"
dict[["f"]] <- "Furious"
## query using key
key <- "s"
dict[[key]]
##[1] "Superlative"
key2 <- "f"
dict[[key2]]
##[1] "Furious"

dict如果您已经在使用,那么这就是
dplyr
中的
recode
功能

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

我发现通过定义一个带有附加字符串的向量很容易做到这一点,如:

map <- c("s"="Superlative", "d"="Dynamic", "f"="Furious")
df$longCharacter <- map(df$shortCharacter)

map如果有data.frame,则使用连接操作,例如合并。如果有向量,请使用命名向量。不太清楚您需要什么。标记一个因子如何?例如:
txt或
switch(x,s=“superative”,d=“Dynamic”,f=“frequer”,stop(x,'notfound'))
@Roland我想合并两个数据帧,但因为一个数据帧中的列使用快捷字符,而第二个数据帧使用完整的单词,在合并之前,我首先必须将快捷方式字符转换为完整字符。这对我不起作用。我得到错误:找不到函数“map”。应该是这样的:
df