从字符“中获取数字”\n 0.28\n\n;用R语言
我想用R从角色那里得到0.28 “\n 0.28\n\n”从字符“中获取数字”\n 0.28\n\n;用R语言,r,R,我想用R从角色那里得到0.28 “\n 0.28\n\n” 也许我应该使用sub()函数,但我不知道怎么做 一般来说,您希望了解正则表达式。这可能很吓人,但你也可以通过例子来学习 在这里,我们可以做一些相对简单的事情: 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]
也许我应该使用sub()函数,但我不知道怎么做 一般来说,您希望了解正则表达式。这可能很吓人,但你也可以通过例子来学习 在这里,我们可以做一些相对简单的事情:
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>
您的用例不需要正则表达式
string <- "\n 0.28\n \n "
as.numeric(string)
[1] 0.28
string到目前为止,这些解决方案都很好,实际上可以教会你一些东西。如果您想要一个简单而愚蠢的答案,taRifx::destring
将起作用:
library(taRifx)
> destring("\n 0.28\n \n ")
[1] 0.28
它使用[^…]
正则表达式习惯用法(“not”),而不是@Dirk的解决方案中的反向引用:
return(as.numeric(gsub(paste("[^", keep, "]+", sep = ""), "", x)))
不错。似乎在某个地方出现另一个数字时就会中断,但所提供的示例确实有效。@Dirk。难道你不想让它破裂吗?例如使用txt,响应良好,示例解释良好。Regex需要更多这方面的知识+1这几乎是前面这些问题的重复:这些问题的一些答案在这里也适用,例如,as.numeric(gsub(“[:alpha:][]”,“”,string))
return(as.numeric(gsub(paste("[^", keep, "]+", sep = ""), "", x)))