我想用R得到角色的0.28 “\ n 0.28 \ n \ n”。
也许我应该使用sub()函数,但我不知道该怎么做。
答案 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)))