2017-08-08 95 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去除机器人同时H:

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

另一种选择,没有正则表达式是提取字符串的中间部分:

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

但是请注意,这些解决方案仅适用于具有至少值工作两个字符。有可能使gsub解决方案适用于单字符值:

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) 
相关问题