arrays - 使用 R 查找数组中的特定字符串

标签 arrays r string

我正在尝试寻找是否有一种快速方法可以在 R 中的数组中搜索特定字符串,有点像游戏 Boggle ,除非您事先知道这个词。

您可以按以下方向移动字符串的下一个字母:上、下、右或左

举一个简单的例子,您有一个以下形式的数组:

> G    
A, Q, A, Q, Q,  
A, Q, P, Q, Q,   
Q, Q, P, L, Q,   
Q, Q, Q, E, Q

并且您想要使用字符串 APPLE 对 G 应用函数,为了使函数返回 TRUEAPPLE 存在于该数组中,如果没有,则为 FALSE

是否存在可以执行此操作的预制函数或包,或者是否有一种聪明的方法来执行此操作,我对处理 R 中的字符串相对较新,并且正在努力寻找一种方法。

非常感谢任何帮助。谢谢。

最佳答案

这将首先检查您的单词中是否存在数组中不存在的字符,然后检查数组中的字符数是否足以满足单词中的重复字母

word <- strsplit("APPLE", "")
pool <- c("A", "Q", "A", "Q",
          "Q", "A", "Q", "P",
          "Q", "Q", "Q", "Q",
          "P", "L", "Q", "Q",
          "Q", "Q", "E", "Q")

t.word <- table(word)
t.pool <- table(pool)

length(setdiff(names(t.word), names(t.pool))) == 0
min(t.pool[names(t.word)] - t.word) >= 0

最后两个函数都会输出TRUE,以表明word中的所有字母都存在于pool中,并且单个字母的计数word 中的字母不大于 pool

以函数形式,如果找到,将输出TRUE,否则输出FALSE

word.find <- function(word, pool) {
  t.word <- table(strsplit(word, ""))
  t.pool <- table(pool)
  length(setdiff(names(t.word), names(t.pool))) == 0 & min(t.pool[names(t.word)] - t.word) >= 0
}

word.find("APPLE", pool)
[1] TRUE

word.find("APPLES", pool)
[1] FALSE

word.find("APPLEE", pool)
[1] FALSE

关于arrays - 使用 R 查找数组中的特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41508006/

相关文章:

Java:文件读取器、按定界符分隔的字符串分隔符帮助

C程序字符串

java - 为什么我的数组程序显示为空?

android - 是否可以从适配器加载 ListPreference 项目?

php - 操作 PHP 数组以匹配函数的数组要求并递归调用函数

从 r 中的树状图中删除 x 轴标签

从另一个数据框R中存在的一个数据框删除数据

如果 R 中两个数据框中不包含彼此,则从两个数据框中删除列

python - 值错误 : The elements are 0-sized

Java:从 StringBuilder 中删除字符串