gpt4 book ai didi

r - 如何将一个单词中的所有字母替换为在先前函数中创建的一对?

转载 作者:行者123 更新时间:2023-12-03 21:13:06 26 4
gpt4 key购买 nike

首先,我创建了一个函数,该函数为我提供了密码学模式

plugboard <- function(){
matrix(sample(letters, 26), nrow = 2, ncol = 13)
}

它给了我一个矩阵,其中每个字母(小写)都与另一个字母配对。

现在我需要创建另一个函数,或者在这个密码学中编码或解码,因此如果我有:
    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
[1,] "v" "h" "k" "a" "w" "l" "f" "d" "u" "r" "t" "m" "s"
[2,] "p" "q" "b" "g" "x" "y" "i" "n" "z" "o" "j" "e" "c"

然后,如果我输入这个新函数“HOUSE”或“house”,它会给我:“qrzcm”,如果我输入“qrzcm”,它会给我“house”。

我尝试执行以下操作:
ATdecoder <- function(word){
word <- x
pat <- data.frame(plugboard())
tolower(x)
x = gsub(pat$V1, pat$V2, x)
}

但我正在努力将其付诸实践。

请帮忙

最佳答案

您需要设置种子,我无法重现您的房屋示例。很有可能你需要在函数外声明解码器,否则每次都不一样!

两件事,1)您需要将输入字符串拆分为单个字符,以及两个,您只需将它们与矩阵的第一行匹配,调出第二行。

将其放入 data.frame 无济于事,因为第一行不被识别为列名。

做:

plugboard <- function(){
matrix(sample(letters, 26), nrow = 2, ncol = 13)
}

set.seed(111)
pat <- plugboard()

pat

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
[1,] "n" "s" "e" "h" "m" "d" "y" "i" "a" "v" "r" "u" "p"
[2,] "t" "o" "c" "q" "j" "w" "x" "z" "g" "l" "f" "k" "b"

ATdecoder <- function(word,pat){
x <- unlist(strsplit(tolower(word),""))
if(all(x %in% pat[1,])){
paste(pat[2,match(x,pat[1,])],collapse="")
}else{
paste(pat[1,match(x,pat[2,])],collapse="")
}
}

ATdecoder("pave",pat)
[1] "bglc"
> ATdecoder("bglc",pat)
[1] "pave"

关于r - 如何将一个单词中的所有字母替换为在先前函数中创建的一对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62473180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com