首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >提取字符串的一部分(用于字符串的向量)

提取字符串的一部分(用于字符串的向量)
EN

Stack Overflow用户
提问于 2013-11-11 22:18:06
回答 4查看 641关注 0票数 0
代码语言:javascript
运行
复制
x<-c("123-12","12-24","6-4")

如何在破折号插入新向量之前提取每个字符串的部分?在这个例子中,我的结果应该等同于

代码语言:javascript
运行
复制
c("123","12","6")

我怎么做同样的事情,除了在冲刺后提取所有的东西?也就是说。

代码语言:javascript
运行
复制
c("12","24","4")

对于我的问题,你可以假设x的每个元素都只有一个破折号。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-11-11 22:24:43

要在破折号之前提取字符串,请用空字符串替换破折号和后面的所有内容。

代码语言:javascript
运行
复制
sub('-.*', '', x)

要在破折号后提取字符串,请执行相反的操作。

代码语言:javascript
运行
复制
sub('.*-', '', x)
票数 3
EN

Stack Overflow用户

发布于 2013-11-11 22:35:08

这是另一种方式,通过将值转换为数字类型的附加好处:

代码语言:javascript
运行
复制
d <- read.table(text=x, sep='-')
#    V1 V2
# 1 123 12
# 2  12 24
# 3   6  4

然后我们有:

代码语言:javascript
运行
复制
d[,1]
# [1] 123  12   6
d[,2]
# [1] 12 24  4
票数 2
EN

Stack Overflow用户

发布于 2013-11-11 22:21:12

您可以使用strsplitlapply的组合

破折号前:

代码语言:javascript
运行
复制
b <- unlist(lapply(strsplit(x, "-"), function(x) x[1]))
> b
[1] "123" "12"  "6" 

破折号后:

代码语言:javascript
运行
复制
a <- unlist(lapply(strsplit(x, "-"), function(x) x[2]))
> a
"12" "24" "4"  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19917091

复制
相关文章

相似问题

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