我有一个很简单的问题。抱歉,是否已经有人问过这个问题,但是我找不到答案... 我想检查基因名称是否以数字开头,如果确实以数字开头,我想在基因名称中添加“ aaa_”。为此,我使用了以下代码:
geneName <- "2310067B10Rik"
if (is.numeric(substring(geneName, 1, 1))) {
geneName <<- paste("aaaa_", geneName, sep="")
}
我想找回的是aaaa_2310067B10Rik。但是,is.numeric返回FALSE,因为子字符串的引号中的字符为“ 2”。我也尝试使用noquote(),但是在子字符串周围使用as.numeric()无效,但是随后还将if代码应用于不以数字开头的基因。有什么建议么?谢谢!
答案 0 :(得分:4)
以下是使用正则表达式(Learning Regular Expressions)的解决方案:
geneName <- c("2310067B10Rik", "Z310067B10Rik")
sub("^(\\d)", "aaa_\\1", geneName)
或作为PERL风格的变体(表示@snoram):
sub("^(?=\\d)", "aaa_", geneName, perl = TRUE)
答案 1 :(得分:1)
使用<ItemsControl ItemsSource="{Binding Parcels}">
</ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" Background="Violet"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
函数:
replace()
位置:
start_nr <- grep("^\\d", geneName)
replace(geneName, start_nr, paste0("aaaa_", geneName[start_nr]))
[1] "aaaa_2310067B10Rik" "foo" "aaaa_9bar"
答案 2 :(得分:0)
geneName <- c("2310067B10Rik", "foo")
ifelse(substring(geneName, 1,1) %in% c(0:9), paste0("aaaa_", geneName), geneName)
[1] "aaaa_2310067B10Rik" "foo"
或者根据以上评论,您可以将substring(geneName, 1,1) %in% c(0:9)
替换为grepl("^\\d", geneName)
答案 3 :(得分:0)
使用regex
:
您可以先检查geneName
的第一个字符,如果它是数字,则可以按如下所示追加:
geneName <- "2310067B10Rik"
ifelse(grepl("^[0-9]*$", substring(geneName, 1,1)),paste("aaaa",geneName,sep="_"),)
输出:
[1] "aaaa_2310067B10Rik"
答案 4 :(得分:0)
geneName=function(x){
if( grepl("^[0-9]",x) ){
as.character(glue::glue('aaaa_{x}'))
}else{x}
}
> geneName("2310067B10Rik")
[1] "aaaa_2310067B10Rik"
> geneName("sdsad")
[1] "sdsad"