文字ベクトル パターンに対して文字列を検証する必要があります。私の現在のコードは次のとおりです。
trim <- function (x) gsub("^\\s+|\\s+$", "", x)
# valid pattern is lowercase alphabet, '.', '!', and '?' AND
# the string length should be >= than 2
my.pattern = c(letters, '!', '.', '?')
check.pattern = function(word, min.size = 2)
{
word = trim(word)
chars = strsplit(word, NULL)[[1]]
all(chars %in% my.pattern) && (length(chars) >= min.size)
}
例:
w.valid = 'special!'
w.invalid = 'test-me'
check.pattern(w.valid) #TRUE
check.pattern(w.invalid) #FALSE
これは非常に遅いと思います...これを行うためのより速い方法はありますか? 多分正規表現?ありがとう!
PS: 素晴らしい回答をありがとうございました。私の目的は、行名と列名が許可された文字である 29 x 29 マトリックスを作成することでした。次に、巨大なテキスト ファイルの各単語を繰り返し処理し、「文字の優先順位」マトリックスを構築します。たとえば、最初の文字から始まる「special」という単語を考えてみましょう。
row s, col p -> increment 1
row p, col e -> increment 1
row e, col c -> increment 1
... and so on.
私のコードのボトルネックはベクトルの割り当てでした。最終的なベクトルを事前に割り当てるのではなく「追加」していたため、コードの実行に 20 秒ではなく 30 分かかっていました。