Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.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
如何从R中的字符向量中提取数字?_R - Fatal编程技术网

如何从R中的字符向量中提取数字?

如何从R中的字符向量中提取数字?,r,R,我有一个字符向量,我想从中获取一个整数和浮点数 a <- c("Sam is 5 years old", "Ram is 3.7 years old" , "John is 17 years 2 months old") 我们可以使用readr readr::parse_number(a) #[1] 5.0 3.7 17.0 更新 基于OP的新例子 library(stringr) sapply(str_extract_all(a, "[0-9]+\\s+(years|mo

我有一个字符向量,我想从中获取一个整数和浮点数

    a <- c("Sam is 5 years old", "Ram is 3.7 years old" , "John is 17 years 2 months old")

我们可以使用
readr

readr::parse_number(a)
#[1]  5.0  3.7 17.0
更新 基于OP的新例子

library(stringr)
sapply(str_extract_all(a, "[0-9]+\\s+(years|months)"), function(x) {
       x1 <- readr::parse_number(x)
       head(if(length(x1)==2)   x1 + round(x1[2]/12, 1) else x1, 1)})
#[1]  5.0  7.0 17.2
这是一条单行线

as.numeric(gsub(' ', '.', trimws(gsub('\\D+', ' ', a))))
#[1]  5.0  3.7 17.2

对代码进行了一些更改。我希望在输出中将月份转换为浮点值,这在parse_number中是不可能的。@AkshayNevrekar假设,如果您的月份是1年9个月,将是什么output@AkshayNevrekar我更新了帖子。请检查这是否是你想要的
as.numeric(sapply(regmatches(a, gregexpr('[0-9]+', a)), paste, collapse="."))
#[1]  5.0  3.7 17.2
as.numeric(gsub(' ', '.', trimws(gsub('\\D+', ' ', a))))
#[1]  5.0  3.7 17.2