58

文字列をテストして、どの要素が実際に数値であるかを確認したいと考えています。正規表現を使用して整数が成功したかどうかをテストできますが、すべての数字と小数が 1 以下の要素を確認したいと考えています。以下は私が試したことです:

x <- c("0.33", ".1", "3", "123", "2.3.3", "1.2r")
!grepl("[^0-9]", x)   #integer test

grepl("[^0-9[\\.{0,1}]]", x)  # I know it's wrong but don't know what to do

論理出力を探しているので、次の結果が期待されます。

[1] TRUE TRUE TRUE TRUE FALSE FALSE
4

6 に答える 6

72

おそらく、データの他の部分がより複雑で、これを破る理由があるかもしれませんが、私の最初の考えは次のとおりです。

> !is.na(as.numeric(x))
[1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE

以下で Josh O'Brien が指摘したよう7Lに、これは R インタープリターが整数 7 として解析する のようなものを取得しません。それらを「もっともらしい数値」として含める必要がある場合、1 つのルートは正規表現でそれらを選択することです。最初、

x <- c("1.2","1e4","1.2.3","5L")
> x
[1] "1.2"   "1e4"   "1.2.3" "5L"   
> grepl("^[[:digit:]]+L",x)
[1] FALSE FALSE FALSE  TRUE

gsub...そして、インデックスを使用してそれらの要素から「L」を取り除きます。

于 2012-11-30T03:01:33.167 に答える