2

我想使用 R "\n 0.28\n \n " 从字符中获取 0.28。

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

4

3 回答 3

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> 

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

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

R> as.numeric(gsub("[\n ]", "", txt))
[1] 0.28
R> 
于 2013-05-05T01:00:49.663 回答
8

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

 string <-  "\n 0.28\n \n "
 as.numeric(string)
 [1] 0.28
于 2013-05-05T01:02:43.640 回答
1

到目前为止的解决方案都很棒,实际上教会了你一些东西。如果您想要愚蠢但简单的答案,taRifx::destring则可以:

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

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

return(as.numeric(gsub(paste("[^", keep, "]+", sep = ""), "", x)))
于 2013-05-05T01:53:43.790 回答