从R语言中获取字符“\ n 0.28 \ n \ n”中的数字

时间:2013-05-05 00:54:41

标签: r

我想用R得到角色的0.28 “\ n 0.28 \ n \ n”。

也许我应该使用sub()函数,但我不知道该怎么做。

3 个答案:

答案 0 :(得分:11)

通常,您希望了解正则表达式。这可能是令人生畏的,但你也可以通过实例学习。

在这里,我们可以做一些相对简单的事情:

R> txt <- "\n 0.28\n \n "
R> gsub(".* ([0-9.]+).*", "\\1", txt)
[1] "0.28"
R> as.numeric(gsub(".* ([0-9.]+).*", "\\1", txt))
[1] 0.28
R> 

(...)标记了我们“想要”的内容,在这里我们说我们想要数字或点,以及其中几个(+)。然后"\\1"会回忆起那场比赛。

或者,我们可以“擦除”所有\n和空格:

R> as.numeric(gsub("[\n ]", "", txt))
[1] 0.28
R> 

答案 1 :(得分:8)

您的用例不需要正则表达式。

 string <-  "\n 0.28\n \n "
 as.numeric(string)
 [1] 0.28

答案 2 :(得分:1)

到目前为止,解决方案很棒,实际上教给你一些东西。如果您想要愚蠢但简单的答案,taRifx::destring将起作用:

library(taRifx)
> destring("\n 0.28\n \n ")
[1] 0.28

它使用[^...]正则表达式习语(“not”)而不是像@ Dirk的解决方案中的反向引用:

return(as.numeric(gsub(paste("[^", keep, "]+", sep = ""), "", x)))