r - R中的复杂字符串操作
问题描述
我正在尝试将字符串向量中的字符从简单的字母字符(物种名称,例如。c("Struthio camelus",...,)
)更改为更复杂的表达式(例如。 c('TS = "Struthio camelus"',...,)
),以便可以用来查询 Web of Science 中每个物种的出版物。由于我将要查询约 10000 个物种,因此我想确定一个可以转换这些字符串的函数。
我已经探索了gsub()
实现这一点的功能,但gsub()
不支持这种字符串操作。
例子:
vector.a <- c("Struthio camelus", "Rhea americana", "Rhea pennata", "Casuarius casuarius")
vector.b <- c('TS = "Struthio camelus"', 'TS = "Rhea americana"', 'TS = "Rhea pennata"', 'TS = "Casuarius casuarius"')
本质上,我想转换vector.a
为vector.b
,因为后者的格式正确,可以查询 Web of Science 数据库。由于查询所需的格式,需要单引号和双引号,如 vector.b 中所示。因此,操纵字符串的困难。
解决方案
为了完善答案,并提供一个可能比paste
您的替换变得更复杂的选项,我们可以尝试sub
在此处使用:
vector.a <- c("Struthio camelus", "Rhea americana", "Rhea pennata", "Casuarius casuarius")
vector.b <- sub("^(.*)$", "TS = \"\\1\"", vector.a)
vector.b
[1] "TS = \"Struthio camelus\"" "TS = \"Rhea americana\""
[3] "TS = \"Rhea pennata\"" "TS = \"Casuarius casuarius\""
推荐阅读
- javascript - 使用 jquery 和 javascript 添加新的 div
- powershell - 用于在 Xerox Phaser 打印机上设置黑白/灰度的 PowerShell 脚本
- php - php 代码打印在 2 页而不是 1 页上
- sqlite - EntityFramework 包含和连接语法
- java - 跟踪信标
- aem - DAM 资产再现 - 获取 cq5dam.thumbnail.48.48.png 再现,但需要原始再现
- debugging - Safari 上没有弹出窗口。使用交互式 SVG
- angular - 错误 TS2322:对象文字只能指定已知属性,并且类型中不存在“标签”
- typescript - Firestore - 如何从 FirebaseFirestore.QuerySnapshot 获取文档 ID?
- java - 未创建表,在 Spring Boot 的多个应用程序中使用来自 maven jar 依赖项的实体