R 提取字符串的一部分(对于字符串向量)

R 提取字符串的一部分(对于字符串向量),r,R,除了在破折号后提取所有内容外,我如何做相同的事情?即 c("123","12","6") 对于我的问题,您可以假设x的每个元素都有一个且只有一个破折号。您可以使用strsplit和lappy的组合: 冲刺前: c("12","24","4") b [1] "123" "12" "6" 短跑后: b <- unlist(lapply(strsplit(x, "-"), function(x) x[1])) > b [1] "123" "12" "6" a "12" "2

除了在破折号后提取所有内容外,我如何做相同的事情?即

c("123","12","6")

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

您可以使用
strsplit
lappy
的组合:

冲刺前:

c("12","24","4")
b
[1] "123" "12"  "6" 
短跑后:

b <- unlist(lapply(strsplit(x, "-"), function(x) x[1]))
> b
[1] "123" "12"  "6" 
a
"12" "24" "4"  

您可以结合使用
strsplit
lappy

冲刺前:

c("12","24","4")
b
[1] "123" "12"  "6" 
短跑后:

b <- unlist(lapply(strsplit(x, "-"), function(x) x[1]))
> b
[1] "123" "12"  "6" 
a
"12" "24" "4"  

要提取破折号前的字符串,请将破折号和破折号后的所有内容替换为空字符串

a <- unlist(lapply(strsplit(x, "-"), function(x) x[2]))
> a
"12" "24" "4"  
要提取破折号后的字符串,请执行相反的操作

sub('-.*', '', x)

要提取破折号之前的字符串,请将破折号和破折号之后的所有内容替换为空字符串

a <- unlist(lapply(strsplit(x, "-"), function(x) x[2]))
> a
"12" "24" "4"  
要提取破折号后的字符串,请执行相反的操作

sub('-.*', '', x)
试试这个:

sub('.*-', '', x)
试试这个:

sub('.*-', '', x)

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

substr(x,1,as.vector(regexpr("-",x))-1)

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

substr(x,1,as.vector(regexpr("-",x))-1)