首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的复字符串操作

R中的复字符串操作
EN

Stack Overflow用户
提问于 2019-08-12 04:03:42
回答 2查看 102关注 0票数 1

我试图改变字符串向量中的字符,从简单的字母字符(物种名称,例如。( c("Struthio camelus",...,))到更复杂的表达式(例如。因此,这可以用于查询科学网中的每个物种的出版物。因为我需要查询10000种类型,所以我想识别一个转换这些字符串的函数。

为了实现这一点,我已经探索了gsub()函数,但是gsub()不支持这种字符串操作。

示例:

代码语言:javascript
复制
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数据库。单引号和双引号是必需的,如vector.b中所示,因为查询需要格式化。因此,操纵字符串的难度。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-12 04:17:45

为了总结出答案,并给出一个比paste更好的选项,如果您的替换变得更加复杂,我们可以在这里尝试使用sub

代码语言:javascript
复制
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\""
票数 4
EN

Stack Overflow用户

发布于 2019-08-12 04:05:49

我们可以使用来自pastebase R

代码语言:javascript
复制
vector.b1 <- paste0('TS = "', vector.a, '"')
identical(vector.b, vector.b1)
#[1] TRUE

基准测试

代码语言:javascript
复制
test <- rep(vector.a, 1e6)
system.time(sub("^(.*)$", "TS = \"\\1\"", test))
#    user  system elapsed 
#   2.249   0.008   2.257 

system.time(paste0('TS = "', test, '"'))
#   user  system elapsed 
#  0.849   0.002   0.852 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57455513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档