2017-08-08 3 views
-1

私はRの文字表を持っています。最初と最後の文字を削除したいのですが 文字です。私はサブ関数を使ってみましたが、X1のみで動作し、 X2では動作しません。基本的に私はこのRの正規表現 - 最初と最後の文字を動的に削除します

X1  |  X2 
-----------|-------------- 
N40ø47.30'| W111ø58.67' 
W32ø50.83'| E96ø51.11' 

から行ってみたい、私はこのような何かを取得したいのですが

X1   X2 
----------|------------ 
40ø47.30 | 111ø58.67 
32ø50.83 | 96ø51.11 
+0

どのように 'sub'を使いましたか? –

+0

DF $ X1 < - sub( '。'、 '、DF $ X1) – Riff

+1

X2でも同様のことが起こります。 http://ideone.com/WzKjjA –

答えて

2

最初の文字が^.で、最後は.$で、 あなたはボットを削除するためにgsubを使用することができます同時に時間:

DF$X1 <- gsub('^.|.$', '', DF$X1) 

別の代替、正規表現のない文字列の真ん中の部分を抽出することである。

substr(DF$X1, 2, nchar(as.character(DF$X1)) - 1) 

しかし、これらのソリューションは唯一、少なくとも持っている値のために働くことに注意してください2文字。 gsubソリューションを1文字の値で使用できるようにすることができます。

gsub('^.(.*).$', '\\1', DF$X1) # thanks for @wiktor-stribiżew 
+0

実際には、この ''^。|。$' 'は1文字と2文字の文字列を削除します。どんなOPが必要かわからない –

+0

@WiktorStribiżew良い点、その制限についての注釈を追加しました – janos

+0

ええ、しかし、OPフィードバックごとに、 'gsub( '^。(。*)。$'、 '\\ 1'、DF $ X1)'は動作しません。 –

1

それはあなたが尋ねたものではありませんが、あなたは文字のみN、Eを削除したい場合は、 'S、W、あなたが実行できる:

gsub("N|E|S|W|'","",DF)