2017-03-14 19 views
1

Rを使って "A01"を "A1"に変換するには?Rを使って "A01"を "A1"に変換するには?

最初の手順として、文字列の中間の文字を取得しようとしましたが、できませんでした。

STR <- "A01" 
p <- as.character(substr(STR,2,1)) 

私は次のようになります。私はRに非常に新しいです。アドバイスをお願いします。

[1] "" 
+0

これを行うことができ、あなたがフォローしたい一般的なルールは何ですか?あなたのすべての価値は、ただ一つの手紙から始まるでしょうか? – MrFlick

+0

文字列が "A00"の場合はどうなりますか? – Fernando

+0

私はそれを試みた。それが「A10」であるとき、「A1」にすべきではない。それは "A10"でなければなりません。どんな助け? – RanonKahn

答えて

3

あなたは0値を置き換えるために前後参照を使用することができます。

sub('(?<![0-9])0*(?=[0-9])', '', STR, perl=TRUE) 
[1] "A1" 

式は数に先行されていないすべての0文字に一致しますが、番号が続いています。

sub('(?<![0-9])0*(?=[0-9])', '', 'A0010', perl=TRUE) 
[1] "A10" 

sub('(?<![0-9])0*(?=[0-9])', '', 'A00', perl=TRUE) 
[1] "A0" 
+0

ありがとう!あなたは私の一日を作った。 – RanonKahn

4

我々はまた、正規表現前後参照せずに

sub("([A-Z]+)0*([0-9]+)", "\\1\\2", c("A01", "A0010", "A00")) 
#[1] "A1" "A10" "A0" 
関連する問題