我有一個數據矩陣的4列和超過20萬行組成的數字,大寫字母,破折號和點的條目。我想把它們表示爲他們的ASCII碼,數字。我嘗試了strtoi,chartoraw和utf8toint函數,但不斷收到錯誤,主要是「要替換的項目數量不是替換長度的倍數」。字符到數字R
如何將整個矩陣轉換爲沒有任何NA強制的數字矩陣?
我有一個數據矩陣的4列和超過20萬行組成的數字,大寫字母,破折號和點的條目。我想把它們表示爲他們的ASCII碼,數字。我嘗試了strtoi,chartoraw和utf8toint函數,但不斷收到錯誤,主要是「要替換的項目數量不是替換長度的倍數」。字符到數字R
如何將整個矩陣轉換爲沒有任何NA強制的數字矩陣?
不確定你的問題,但如果你想將字符矩陣轉換爲數字,請考慮加密摘要。
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"
你好,謝謝你的回答!我會嘗試將列表中的數字合併爲一個數字。例如,c(65,89,65,69,73,65,73,65,73,66,46)是矩陣中的元素之一。我想將其表示爲658965697365736646並將其解釋爲整數。那可能嗎? –
> (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
你好,非常感謝你的回答!現在,我將嘗試將數字矢量連接爲一個數字。例如,c(65,89,65,69,73,65,73,65,73,66,46)是矩陣中的元素之一。我想將其表示爲658965697365736646並將其解釋爲整數。那可能嗎? –
給一個'dput(頭(your_matrix)'因爲我不能讓你怎麼能在一個矩陣有不同類別 – Tensibai
請仔細閱讀。有關[如何問一個好問題](http://stackoverflow.com/help/how-to-ask)以及如何給出[可重現的示例]的信息(http://stackoverflow.com/questions/5963269/ how-to-make-a-great-r-reproducible-example/5963610)。這會讓別人更容易幫助你。 – Jaap