2016-08-03 29 views
7

Tôi cần trích xuất 2 ký tự đầu tiên trong một chuỗi để sau đó tạo phân phối ô lô. vector:Trích xuất 2 ký tự đầu tiên trong một chuỗi

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

Tôi đã nhận này cho đến nay:

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

chức năng invoke

substrRight(x, 1) 

đáp ứng

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

cần in 2 ký tự cuối cùng không phải là linh sam t.

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

Trả lời

15

Bạn chỉ có thể sử dụng substr chức năng trực tiếp để lấy hai chữ cái đầu tiên của mỗi chuỗi:

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

Bạn cũng có thể viết một hàm đơn giản để làm một "đảo ngược" xâu, đưa ra ' bắt đầu' và 'dừng lại' giá trị giả định chỉ số bắt đầu vào cuối của chuỗi:

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

Sử dụng 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" 
Các vấn đề liên quan