質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

1回答

511閲覧

Rにおいて配列から1文字のものを除きたいが、[a-z]{1}が期待通りの動作をしない件

haihaikazuma

総合スコア181

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2021/06/02 06:47

編集2021/06/02 06:58

前提・実現したいこと

R言語において、配列から、正規表現に一致した値を除きたいです。
また、そもそも正規表現について誤りがありましたらご指摘いただきたいです。

配列の値、c("aaa","123","AAA","a","b")から、1文字のもの、
ここでは"a"と"b"を除きたいです。

また、今回は正規表現を利用するためにgrep()を利用しておりますが、
別の手法で実現可能なら是非ともそちらの情報をいただけないでしょうか。
浅学で恐縮ですがよろしくお願いいたします。

発生している問題・エラーメッセージ

エラーは発生しておりません。
期待通りの結果が得られず困っております。

正規条件を[a-z]{1}としましたが、"aaa"も除かれてしまいます。

該当のソースコード

R

1data <- c("aaa","123","AAA","a","b") 2data 3 4# "a"と"b"を除きたい 5grep("[a-z]{1}", data, value = TRUE,invert = TRUE)

data <- c("aaa","123","AAA","a","b")
data
[1] "aaa" "123" "AAA" "a" "b"

grep("[a-z]{1}", data, value = TRUE,invert = TRUE)

[1] "123" "AAA"

試したこと

・grep()および、正規表現についてインターネットで調査してみましたが情報得られませんでした。
・[a-z]{2}にした場合、"a"と"b"は除かれず、"aaa"のみ除かれます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決いたしました。
根本的解決にはなっておりませんが、以下の方法で任意の小文字アルファベット1文字を抽出できました。

R

1grep("^[a-z]$", data, value = TRUE,invert = TRUE)

【追記】
KojiDoi 様より補足いただきました。
正規表現によるマッチングは、正規表現式に合致する文字列が含まれていれば真とみなされるようです。つまり、完全一致ではありません。
正規表現式"[a-z]{1}"の意味は、「小文字1文字」です。"aaa"には「小文字1文字」は含まれているので真となるため、期待通りの結果になりませんでした。

投稿2021/06/02 07:12

編集2021/06/02 08:27
haihaikazuma

総合スコア181

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KojiDoi

2021/06/02 07:35

正規表現によるマッチングは、正規表現式に合致する文字列が含まれていれば真とみなされます。完全一致ではありません。 正規表現式`[a-z]{1}`の意味は、「小文字1文字」です。`aaa`に「小文字1文字」は含まれているので真です。
haihaikazuma

2021/06/02 08:25

補足いただきありがとうございます。 こちら、文章成形して自己解決として盛り込ませていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問