如何计算字符串中每个字符的出现次数并将输出编码为[字符] [数字] [字符] [数字]格式?

时间:2017-03-17 16:38:52

标签: r

我想计算以下字符串中每个字符的出现次数,并将结果输出为[字符] [数字] [字符] [数字]格式,小写并按字符排序。

"Hello World !"
 d 1 e 1 h 1 l 3 o 2 r 1 w 1 ! 1

2 个答案:

答案 0 :(得分:0)

基础R中的解决方案首先,我们使用strsplit()和空字符串“”拆分字符串。同时取消列表和排序。为了更好地衡量,我们在输出中定义了一个我们不想要的字符串向量;看来你不把空间算作“角色”。这必须定义。接下来,粘贴在paste0()中的一个小包。首先,对单词的唯一性使用lapply来计算每次出现的次数。然后,将其粘贴到相应的字符串(和等号)。最后,用逗号折叠结果字符串。

以下是代码:

example_string = "Hello World!"

unwanted_chars = c(" ")

split_string = sort(unlist(strsplit(example_string, "")))
split_string = split_string[split_string %in% unwanted_chars]

paste0(paste0(unique(split_string), " = ",
                                unlist(lapply(unique(split_string),
                                                        function(x) sum(x == unlist(split_string))))),
             collapse = ", ")

长线看起来有点难看,如果你想要解开它,逐层解开它。

答案 1 :(得分:0)

@Calbers是正确的,strsplit是正确的方法,但可以使用单行来实现:

examples = c("Hello World!", "Lorem ipsum")
lapply(strsplit(examples, ""), table)

即。使用空分割examples然后"" lapply函数将table的每个元素拆分为它。只有一个例子就是:

table(strsplit(examples, "")[[1]])

即。我们从strsplit输出的列表中获取第一个元素。