Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从字符“中获取数字”\n 0.28\n\n;用R语言_R - Fatal编程技术网

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

从字符“中获取数字”\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]

我想用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] 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)))