我想将一些字符串重新编码为二进制模式,以便将它们编码为矩阵,在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将每个字母转换为二进制序列。
我已经尝试了一些方法,但无法获得一个很好的功能......
任何帮助?
答案 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