如何使用gsub在R中只保留向量中的第一个字符/数字?
基本上,我只想保留向量中的第一个字符,我知道这可以在substr中轻松完成,但我想知道如何在gsub中完成 比如说,如何使用gsub在R中只保留向量中的第一个字符/数字?,r,R,基本上,我只想保留向量中的第一个字符,我知道这可以在substr中轻松完成,但我想知道如何在gsub中完成 比如说, codes <- c("02Q","4E (1)","4S (1)","A0","A2","A4") 谢谢你能行 sub("^(\\w).*$", "\\1", codes) #[1] "0" "4" "4" "A" "A" "A" 说明: ^:表示字符串的开头 \w:表示用括号捕获的字母数字项,然后将\\1作为替换参数进行检索 *:表示任何内容,0次或更多次 $:表示
codes <- c("02Q","4E (1)","4S (1)","A0","A2","A4")
谢谢你能行
sub("^(\\w).*$", "\\1", codes)
#[1] "0" "4" "4" "A" "A" "A"
说明:
^:表示字符串的开头
\w:表示用括号捕获的字母数字项,然后将\\1作为替换参数进行检索
*:表示任何内容,0次或更多次
$:表示字符串的结尾
你能行
sub("^(\\w).*$", "\\1", codes)
#[1] "0" "4" "4" "A" "A" "A"
说明:
^:表示字符串的开头
\w:表示用括号捕获的字母数字项,然后将\\1作为替换参数进行检索
*:表示任何内容,0次或更多次
$:表示字符串的结尾
似乎你只想保留第一个角色
gsub("(?<!^).", "", codes, perl=TRUE)
# [1] "0" "4" "4" "A" "A" "A"
似乎你只想保留第一个角色
gsub("(?<!^).", "", codes, perl=TRUE)
# [1] "0" "4" "4" "A" "A" "A"
旁注:\w为[a-zA-Z0-9],包括允许字符中的下划线。只有字母数字字符[:alnum:]才是better@Tensibai,很好,但是字符串的第一个字符中可以包含的内容有点流行,我以为它只适用于数字,但是你可以有一个字母,为什么不呢-旁注:\w为[a-zA-Z0-9],包括允许字符中的下划线。只有字母数字字符[:alnum:]才是better@Tensibai,很好,但是字符串的第一个字符中可以包含的内容有点流行,我以为它只适用于数字,但是你可以有一个字母,为什么不呢-我认为这只是经典的XY问题。如果你有一个简单而有效的解决方案,为什么要把它复杂化呢?我敢打赌子循环码,1L,1L,当然。内部子循环码,1L,1L将在速度和简单性方面击败任何正则表达式。我认为这只是经典的XY问题。如果你有一个简单而有效的解决方案,为什么要把它复杂化呢?我打赌子循环码,1L,1L,当然。内部子循环码,1L,1L将在速度和简单性上击败任何正则表达式。
> sub("(?!^.).*", "", codes, perl=T)
[1] "0" "4" "4" "A" "A" "A"
> sub("\\B.*", "", codes, perl=T)
[1] "0" "4" "4" "A" "A" "A"