変数a
のようなNCBI参照シーケンスのアクセッション番号を使用しています。
a <- c("NM_020506.1","NM_020519.1","NM_001030297.2","NM_010281.2","NM_011419.3", "NM_053155.2")
Biomartパッケージから情報を取得するには、.1
、.2
など。アクセッション番号の後。私は通常、このコードでこれを行います:
b <- sub("..*", "", a)
# [1] "" "" "" "" "" ""
しかし、ご覧のとおり、これはこの変数の正しい方法ではありません。誰でもこれで私を助けることができますか?
期間をエスケープする必要があります。
a <- c("NM_020506.1","NM_020519.1","NM_001030297.2","NM_010281.2","NM_011419.3", "NM_053155.2")
gsub("\\..*","",a)
[1] "NM_020506" "NM_020519" "NM_001030297" "NM_010281" "NM_011419" "NM_053155"
それらをファイル名のふりをして、拡張子を削除できます:
tools::file_path_sans_ext(a)
# [1] "NM_020506" "NM_020519" "NM_001030297" "NM_010281" "NM_011419" "NM_053155"
できること:
sub("*\\.[0-9]", "", a)
または
library(stringr)
str_sub(a, start=1, end=-3)
文字列を固定長にする必要がある場合は、base R
からのsubstr
を使用できます。ただし、regexpr
を使用して.
の位置を取得し、substr
で使用できます。
substr(a, 1, regexpr("\\.", a)-1)
#[1] "NM_020506" "NM_020519" "NM_001030297" "NM_010281" "NM_011419" "NM_053155"