2016-07-26 3 views
-2

숫자, 대문자, 대시 및 점으로 이루어진 항목으로 구성된 4 열 및 20,000 개가 넘는 행의 데이터 행렬이 있습니다. 나는 그들의 ASCII 코드, 숫자로 표현하고 싶다. strtoi, chartoraw 및 utf8toint 함수를 시도했지만 오류가 계속 발생했습니다. 주로 "대체 할 항목 수는 대체 길이의 배수가 아닙니다."R 숫자의 문자 행렬

어떻게 NA 강제 변환없이 전체 행렬을 숫자 행렬로 변환 할 수 있습니까?

+3

이')이'dput (머리 (your_matrix을 부여 – Tensibai

+3

읽어 보시기 바랍니다. [좋은 질문을하는 법에 대한 정보] (http://stackoverflow.com/help/how-to-ask) 및 [재현 가능한 예제] 제공 방법 (http://stackoverflow.com/questions/5963269/) how-to-make-a-great-r-reproducible-example/5963610) 이것은 다른 사람들이 여러분을 도울 수있게 도와 줄 것입니다 .. – Jaap

답변

0

질문을 모르겠지만 문자의 행렬을 숫자로 변환하려면 암호화 요약을 고려하십시오. 의견에 따라

x <- matrix(letters[1:9],3,3) 
x 
    [,1] [,2] [,3] 
[1,] "a" "d" "g" 
[2,] "b" "e" "h" 
[3,] "c" "f" "i" 

digest(x) 
[1] "b94e24be564d1af6dfedba8c3616b56d" 
+0

안녕하십니까, 답변 해 주셔서 감사합니다! 목록에있는 숫자를 하나의 숫자로 조합 해 봅니다. 예를 들어, c (65, 89, 65, 69, 73, 65, 73, 65, 73, 66, 46)는 행렬의 요소 중 하나입니다. 658965697365736646으로 표현하고이를 정수로 해석하고 싶습니다. 그게 가능하니? –

0
> (tmp <- matrix(c(LETTERS[1:20],"3","?","a","-"),6)) 
    [,1] [,2] [,3] [,4] 
[1,] "A" "G" "M" "S" 
[2,] "B" "H" "N" "T" 
[3,] "C" "I" "O" "3" 
[4,] "D" "J" "P" "?" 
[5,] "E" "K" "Q" "a" 
[6,] "F" "L" "R" "-" 
> (tmp <-apply(tmp,c(1,2), utf8ToInt)) 
    [,1] [,2] [,3] [,4] 
[1,] 65 71 77 83 
[2,] 66 72 78 84 
[3,] 67 73 79 51 
[4,] 68 74 80 63 
[5,] 69 75 81 97 
[6,] 70 76 82 45 
> intToUtf8(tmp) 
[1] "ABCDEFGHIJKLMNOPQRST3?a-" 

편집 : 난 당신이 행렬에서 다른 클래스를 가질 수있는 방법을 얻을 수

#Altered paste function which we will call twice 
pasteC <- function(x){paste(x,collapse="")} 
#Replicate your example of a cell elements being a list 
values <-c(LETTERS[1:20],"3","?","a","-") 
#place in a data.frame 
tmp <- data.frame(id = 1:20) 
tmp$var <- list(values) 
tmp$var.int <- sapply(tmp$var, function(x) pasteC(utf8ToInt(pasteC(x)))) 
tmp 
+0

안녕하세요, 정말 도움이 답변 해 주셔서 감사합니다! 이제, 하나의 숫자로 숫자 벡터를 연결하려고합니다. 예를 들어, c (65, 89, 65, 69, 73, 65, 73, 65, 73, 66, 46)는 행렬의 요소 중 하나입니다. 658965697365736646으로 표현하고이를 정수로 해석하고 싶습니다. 그게 가능하니? –