2016-08-03 21 views
7

Potrzebuję wyodrębnić pierwsze 2 znaki w ciągu, aby później utworzyć dystrybucję działek. wektor:Wyodrębnij pierwsze 2 znaki w ciągu znaków

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

mam zdobyć tak daleko:

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

funkcja invoke

substrRight(x, 1) 

Response

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

Potrzeba drukuje ostatnie 2 nie znaki jodeł t.

[1] "75" "80" "85" 

Odpowiedz

15

można po prostu użyć funkcji substr bezpośrednio podjąć pierwsze dwa znaki każdej wyrażenie:

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

Można również napisać prostą funkcję, aby zrobić „reverse” podciąg, dając " początek”i«stop»przy założeniu wartości indeksu zaczyna się na końcu łańcucha:

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" 
0

użytkowania 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"