首页 > 解决方案 > 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.avector.b,因为后者的格式正确,可以查询 Web of Science 数据库。由于查询所需的格式,需要单引号和双引号,如 vector.b 中所示。因此,操纵字符串的困难。

标签: rstring

解决方案


为了完善答案,并提供一个可能比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\""

推荐阅读