将字符串重新编码为二进制矩阵

标签 r matrix binary

我想将一些字符串重新编码为二进制模式,以便在 R 中将它们编码为矩阵。假设我在数据框中有以下字符串:

strings  code
ABC       1
BCA       2
CAB       1

提取它们后,我有以下字符串:

“ABC” “BCA” “CAB”

我想实现下一个转变:

A = 100
B = 010
C = 001

这样将“ABC”转换为下一个矩阵

100
010
001

因此,“BCA”为:

010
001
100

“CAB”为:

001
100
010

并且,经过此转换,得到“ABC”的向量:

100010001

代表ABC等等。

基本上,我想要做的是使用字母字符的二进制字典定义一个算法,以便它使用 R 将每个字母转换为二进制序列。

我尝试了一些方法,但无法获得一个好的功能......

有什么帮助吗?

最佳答案

创建一个命名向量,然后拆分并匹配。

dictionary <- setNames(c("100", "010", "001"), LETTERS[1:3])

x <- c("ABC", "BCA", "CAB")

sapply(strsplit(x, ""), function(i)
  paste(dictionary[ i ], collapse = ""))

# [1] "100010001" "010001100" "001100010"

或者为什么不使用真正的二进制文件而不是创建自定义字典?

sapply(x, function(i)
  paste(rawToBits(charToRaw(i)), collapse = ""))

# ABC 
# "010000000000010000010000000001000101000000000100" 
# BCA 
# "000100000000010001010000000001000100000000000100" 
# CAB 
# "010100000000010001000000000001000001000000000100"

关于将字符串重新编码为二进制矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47074082/

相关文章:

r - 锯齿形指标的累积总和

r - 使用 R 将不同的数据帧写入一个 .csv 文件中

linux-kernel - Linux内核镜像字符串提取

binary - 有用的二进制差异工具(除了 msdn[apatch 和 mpatch]、xdelta、bsdiff、vbindiff 和 winmerge)

php - 使用 PHP 将 Base64 字符串作为二进制文件保存到磁盘

html - 如何在 Shiny 和 Shinydashboard 中自定义 HTML 文本和 verbatimTextOutput 之间的空间

c++ - 将 Rcpp 函数扩展到任何类型的输入 vector

r - 使随机相关矩阵半定正

python - 存储 3d 空间中点的信息

java - 矩阵运算(转置)