r - gsub / sub 在某些字符之间提取
问题描述
如何从 R 中的以下字符串中提取数字/ID?
link <- "D:/temp/sample_data/0000098618-13-000011.htm"
我只想提取0000098618-13-000011
那就是丢弃.htm
和D:/temp/sample_data/
。
我试过 grep 和 gsub 没有太多运气。
解决方案
1) basename使用basename
后跟sub
:
sub("\\..*", "", basename(link))
## [1] "0000098618-13-000011"
2) file_path_sans_ext
library(tools)
file_path_sans_ext(link)
## [1] "0000098618-13-000011"
3) 子
sub(".*/(.*)\\..*", "\\1", link)
## [1] "0000098618-13-000011"
4) gsub
gsub(".*/|\\.[^.]*$", "", link)
## [1] "0000098618-13-000011"
5)strsplit
sapply(strsplit(link, "[/.]"), function(x) tail(x, 2)[1])
## [1] "0000098618-13-000011"
6) 读表。Iflink
是一个向量,这仅在所有元素具有相同数量的 / 分隔组件时才有效。这也假设唯一的点是分隔扩展名的点。
DF <- read.table(text = link, sep = "/", comment = ".", as.is = TRUE)
DF[[ncol(DF)]]
## [1] "0000098618-13-000011"
推荐阅读
- python - 来自不同行的增长文本文件的Python readline增量
- php - 在 drupal 8 自定义模块中,创建 Excel 文件,写入数据并使用密码锁定文件?
- php - PHP如何计算一个数组?
- transactions - Italian Action 上的交易 API
- scala - 在 pyspark 集群纱线提交中的 spark-sftp jar 中出现错误
- python - 使用 Scrapy 提取所有正文(仅限文本)
- html - 为什么
- anylogic - 源的不同概率-ANYLOGIC
- html - Flexbox - 调整窗口大小时使元素高度缩小
- flutter - 在底部工作表对话框的上下文中颤动 bloc BlocProvider.of(context)