x<-c("123-12","12-24","6-4")
如何在破折号之前将每个字符串的部分提取到新的向量中?在这个例子中,我的结果应该等同于
c("123","12","6")
我如何做同样的事情,除了在破折号后提取所有东西?即。
c("12","24","4")
对于我的问题,你可以假设x的每个元素都有一个且只有一个破折号。
答案 0 :(得分:3)
要在破折号之前提取字符串,请将破折号和后面的所有内容替换为空字符串。
sub('-.*', '', x)
要在破折号后提取字符串,请执行相反的操作
sub('.*-', '', x)
答案 1 :(得分:2)
这是另一种方式,除了将值转换为数字类型之外还有其他好处:
d <- read.table(text=x, sep='-')
# V1 V2
# 1 123 12
# 2 12 24
# 3 6 4
然后我们有:
d[,1]
# [1] 123 12 6
d[,2]
# [1] 12 24 4
答案 2 :(得分:1)
您可以结合使用strsplit
和lapply
:
破折号之前:
b <- unlist(lapply(strsplit(x, "-"), function(x) x[1]))
> b
[1] "123" "12" "6"
破折号后:
a <- unlist(lapply(strsplit(x, "-"), function(x) x[2]))
> a
"12" "24" "4"
答案 3 :(得分:0)
试试这个:
substr(x,1,as.vector(regexpr("-",x))-1)