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

时间:2017-11-02 11:22:35

标签: 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将每个字母转换为二进制序列。

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

任何帮助?

2 个答案:

答案 0 :(得分:2)

制作一个命名向量,然后拆分并匹配。

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

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

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

{{1}}

答案 1 :(得分:1)

我们可以使用gsub。创建一个键/值list('lst'),循环遍历'lst'的序列,使用gsub匹配'lst'的names,替换为'value' '并将其归还''字符串'列

lst <- list(A = '100', B = '010', C = '001')
for(i in seq_along(lst)) df1$strings <- gsub(names(lst)[[i]], lst[[i]], df1$strings)
df1
#    strings code
#1 100010001    1
#2 010001100    2
#3 001100010    1