我想将一些字符串重新编码为二进制模式,以便在 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/