2014-04-16 17 views
7

Tôi đã vector sau:số Convert to chữ

x <- c(11, 12, 21, 22) 

và tôi muốn chuyển nó sang các chữ cái tương ứng, ví dụ, tôi muốn để có được kết quả này:

AA AB BA BB 

Làm thế nào để làm điều này? Tôi đặt cược có một câu trả lời đơn giản và nó đi qua sử dụng các vector LETTERS dành riêng, nhưng tôi không thể tìm ra một giải pháp. Đây là cách tốt nhất mà tôi đã xoay xở để tìm ra cho đến nay (bạn có thể muốn đưa những đứa trẻ ra khỏi phòng):

> paste0(gsub(1, LETTERS[1], substr(x, 1, 1)), 
     gsub(2, LETTERS[2], substr(x, 1, 1))) 
[1] "A1" "A1" "2B" "2B" 

Trả lời

10

Vì đây chỉ liên quan đến một-một ký tự thay thế, nó có thể là đơn giản nhất để chỉ sử dụng chartr()

chartr("123456789", "ABCDEFGHI", x) 
# [1] "AA" "AB" "BA" "BB" 
3

Như thế này?

x <- c(11, 12, 21, 22) 

s1 = as.numeric(substr(x, start=1, stop=1)) 
s2 = as.numeric(substr(x, start=2, stop=2)) 

print(paste0(LETTERS[s1], LETTERS[s2])) 

>[1] "AA" "AB" "BA" "BB" 
2

hay như thế này:

sapply(strsplit(as.character(c(123,11,22,5612)),""), function(x) paste0(LETTERS[as.integer(x)], collapse="")) 
    ## [1] "ABC" "AA" "BB" "EFAB" 
4

Nếu không có thư viện, các giải pháp một dòng compact là

sapply(strsplit(paste(x),''), function(y) paste(LETTERS[as.numeric(y)], collapse = '')) 
# [1] "AA" "AB" "BA" "BB" 
+0

Đẹp nhất, nhưng hãy nhớ rằng khi điều này sẽ phải đối mặt với một số không nó sẽ trả về ký tự rỗng, do đó vẽ 1 và 10 cả hai là "A". –

Các vấn đề liên quan