x<-c("123-12","12-24","6-4")
如何将破折号之前的每个字符串的部分提取到新向量中?在这个例子中,我的结果应该等同于
c("123","12","6")
除了在破折号后提取所有内容外,我该如何做同样的事情?IE
c("12","24","4")
对于我的问题,您可以假设 x 的每个元素都只有一个破折号。
x<-c("123-12","12-24","6-4")
如何将破折号之前的每个字符串的部分提取到新向量中?在这个例子中,我的结果应该等同于
c("123","12","6")
除了在破折号后提取所有内容外,我该如何做同样的事情?IE
c("12","24","4")
对于我的问题,您可以假设 x 的每个元素都只有一个破折号。
要提取破折号之前的字符串,请将破折号和后面的所有内容替换为空字符串。
sub('-.*', '', x)
要在破折号后提取字符串,请执行相反的操作
sub('.*-', '', x)
这是另一种方式,将值转换为数字类型带来了额外的好处:
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
您可以使用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"
尝试这个:
substr(x,1,as.vector(regexpr("-",x))-1)