计算每个字符并存储为<k,v>对

时间:2018-07-03 06:23:58

标签: r

如何使用给定的字符串计算给定字符串中的唯一字符并将其存储为键值对中的键值对?这里的key将是不同的字符,值将是字符串中字符的出现。

假设我输入的字符串为"hello"。预期的输出将是:

h -> 1
e -> 1
l -> 2
o -> 1

2 个答案:

答案 0 :(得分:2)

在将字符串拆分为字母后,我们可以使用table来计数频率。如果需要,简单的sapply可以将其转换为列表,即

table(strsplit('hello', ''))
#e h l o 
#1 1 2 1 

#or

sapply(table(strsplit('hello', '')), list)
#$`e`
#[1] 1

#$h
#[1] 1

#$l
#[1] 2

#$o
#[1] 1

答案 1 :(得分:1)

尽管有hashmap包,但

R不支持任何本地哈希图。但是,我们可以轻松地在此处使用列表来模拟哈希功能:

lst <- list()
for (i in strsplit('hello', '')[[1]]) {
    lst[[i]] <- ifelse(is.null(lst[[i]]), 1, lst[[i]] + 1)
}

lst
$h
[1] 1

$e
[1] 1

$l
[1] 2

$o
[1] 1

Demo

请注意,现在访问地图中的键仅意味着访问列表中的条目,例如lst$l返回2,因为l在字符串hello中出现了两次。