web-dev-qa-db-ja.com

文字列の最初の2文字を抽出します

後でビンプロット分布を作成するには、文字列の最初の2文字を抽出する必要があります。ベクター:

x <- c("75 to 79", "80 to 84", "85 to 89") 

私はこれまでに得ました:

substrRight <- function(x, n){
  substr(x, nchar(x)-n, nchar(x))
}

関数を呼び出す

substrRight(x, 1)

応答

[1] "79" "84" "89"

最初ではなく最後の2文字を印刷する必要があります。

[1] "75" "80" "85"
27
Seb

substr関数を直接使用して、各文字列の最初の2文字を取得できます。

x <- c("75 to 79", "80 to 84", "85 to 89")
substr(x, start = 1, stop = 2)
# [1] "75" "80" "85"

インデックスが文字列の最後から始まると仮定して、「開始」と「停止」の値を与える「逆」部分文字列を行う簡単な関数を書くこともできます。

revSubstr <- function(x, start, stop) {
  x <- strsplit(x, "")
  sapply(x, 
         function(x) paste(rev(rev(x)[start:stop]), collapse = ""), 
         USE.NAMES = FALSE)
}
revSubstr(x, start = 1, stop = 2)
# [1] "79" "84" "89" 
51
dayne

これがstringrソリューションです。

str_extract(x, "^.{3}")
8
Ben G

gsub...を使用します.

x <- c("75 to 79", "80 to 84", "85 to 89") 

gsub(" .*$", "", x) # Replace the rest of the string after 1st space with  nothing
[1] "75" "80" "85"
2
user5249203