Regex 从基中从字符向量中提取正则表达式匹配
假设我有一个字符向量测试:Regex 从基中从字符向量中提取正则表达式匹配,regex,r,Regex,R,假设我有一个字符向量测试: test = c("2014-03-02","2012-09-08","2010-12-11") 我希望结果是数字形式的年数,如下所示: c(2014,2012,2010) 如何以“简单”的方式完成此任务?目前,以下方法很好,但不是很“漂亮”: test = c("2014-03-02","2012-09-08","2010-12-11") tmp = strsplit(test,split="-") myYears = as.numeric(unl
test = c("2014-03-02","2012-09-08","2010-12-11")
我希望结果是数字形式的年数,如下所示:
c(2014,2012,2010)
如何以“简单”的方式完成此任务?目前,以下方法很好,但不是很“漂亮”:
test = c("2014-03-02","2012-09-08","2010-12-11")
tmp = strsplit(test,split="-")
myYears = as.numeric(unlist(lapply(tmp, function(x) x[[1]])))
我确信这可以通过不同的方式使用regex“\d{4}”以某种方式完成。您可以使用
sub
函数。只需用空字符串替换从第一个-
到最后一个的所有字符
> test = c("2014-03-02","2012-09-08","2010-12-11")
> sub("-.*", "", test)
[1] "2014" "2012" "2010"
> as.numeric(sub("-.*", "", test))
[1] 2014 2012 2010
您可以使用
sub
功能。只需用空字符串替换从第一个-
到最后一个的所有字符
> test = c("2014-03-02","2012-09-08","2010-12-11")
> sub("-.*", "", test)
[1] "2014" "2012" "2010"
> as.numeric(sub("-.*", "", test))
[1] 2014 2012 2010
为什么不只做以下几点,它可以在一行中完成您正在做的所有事情:
as.numeric(sapply(strsplit(test, "-"), '[', 1))
这是1。使用-2拆分向量。选择第一项并将其简化为向量3。将其转换为数字为什么不只执行以下操作,即可在一行中完成所有操作:
as.numeric(sapply(strsplit(test, "-"), '[', 1))
这是1。使用-2拆分向量。选择第一项并将其简化为向量3。将其转换为数字您可以尝试:
as.numeric(substr(test,1,4))
或:
另一种选择:
as.numeric(strftime(test,format="%Y"))
或:
你可以试试:
as.numeric(substr(test,1,4))
或:
另一种选择:
as.numeric(strftime(test,format="%Y"))
或:
test=c(“2014-03-02”、“2012-09-08”、“2010-12-11”)
年份test=c(“2014-03-02”、“2012-09-08”、“2010-12-11”)
年份即使您要求提供base R
解决方案,我只想让您知道,有一种非常简单的方法可以使用函数year
直接将年份提取为numeric
:
test=c(“2014-03-02”、“2012-09-08”、“2010-12-11”)
图书馆(lubridate)
年份测试即使您要求使用base R
解决方案,我只是想让您知道,有一种非常简单的方法可以使用函数year
直接将年份提取为numeric
:
test=c(“2014-03-02”、“2012-09-08”、“2010-12-11”)
图书馆(lubridate)
年考我在上得到“此网页不可用”link@AvinashRajThanx很多:)是否有一个在线站点可以运行此功能,或者在您的系统上运行此功能?我得到“此网页不可用”在…上link@AvinashRajThanx很多:)是否有一个在线网站,你可以运行这个或你的系统上有它?也许一个解释会有帮助?嗨@BenBlack我在我的答案中添加了解释检查它也许一个解释会有帮助?嗨@BenBlack我在我的答案中添加了解释检查它
test = c("2014-03-02","2012-09-08","2010-12-11")
library(lubridate)
year_test <- year(test)
year_test
#[1] 2014 2012 2010
is.numeric(year_test)
# [1] TRUE