但是发现R语言实现这个结构还是比较麻烦,比如深层的引用传递:
- a1 <- list(name = list( b1 = c(1,2,3) ))
- a2 <- a1$name
- a2$b1 <- c(3,4,5)
- a1$name$b1
所以小弟再阅尽了无数的资料,最终采用了一种笨办法,手动实现:
- rm(list = ls())
- trie <- list()
- test_str <- c('你好')
- addTrie <- function(trie, word) {
- char_length <- nchar(word)
-
- single_str <- strsplit(word, '')[[1]]
-
- if (is.null( trie[single_str[1]][[1]] )) {
- trie[[single_str[1]]] <- list()
- }
-
- if (char_length == 2) {
- if (is.null(trie[single_str[1]][[single_str[2]]][[1]])) {
- trie[[single_str[1]]][[single_str[2]]] <- list()
- }
- }
-
-
- if (char_length == 3) {
- if (is.null(trie[single_str[1]][[single_str[2]]][[single_str[3]]][[1]])) {
- trie[[single_str[1]]][[single_str[2]]][[single_str[3]]] <- list()
- }
- }
-
- trie
- }
- #这里如果还要处理更长的字符串,那么代码就会越来越臃肿
- trie <- addTrie(trie, '大家好')
所以在此请教各位前辈,有什么办法可以解决这个问题吗?


雷达卡




京公网安备 11010802022788号







