我正在R中构建一个函数,其中函数将采用字符串(如"ABCDEFG")和矩阵作为输入,并根据矩阵将字符串中的每个字符转换为另一个字符串.
我试过的代码是这样的:
plugboard <- function() {
matrix(sample(letters, 26,
replace = FALSE, prob = NULL),
nrow = 2, ncol = 13)
}
Run Code Online (Sandbox Code Playgroud)
这是为了生成两行矩阵,其中每列中有两个字母配对在一起.
并且此函数根据第一个函数中生成的矩阵解码字符串中的字符:
decoder <- function(message, matrix) {
message = tolower(message)
for (i in 1:13){
message = gsub(matrix[1,i], matrix[2,i], message)
}
return(message)
}
Run Code Online (Sandbox Code Playgroud)
我得到的结果是这样的(x矩阵,m 是字符串):
> x
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
[1,] "w" "f" "u" "p" "g" "i" "j" "o" "b" "q" "z" "d" "c"
[2,] "k" "s" "a" "l" "m" "e" "n" "r" "y" "t" "x" "v" "h"
> m = "wfupksal"
> decoder(m,x)
[1] "wfupwfup"
>
Run Code Online (Sandbox Code Playgroud)
它应该将"wfupksal"变成"ksalwfup".
我的意思是代码应该将第1行中的所有字符转换为第二行中的字符,而在字符串中反之亦然.但我只能做一种方法(将第2行中的所有字符更改为第1行中的字符).
示例:如果我们将上面的矩阵"x"作为示例,则字符串"嘿你好吗"应该转换为"cib crk uoi bra".在这种情况下,字符串中第一行中的所有字符都将更改为第二行中的字符,反之亦然.
R中是否有一个函数来反转字符串中的字符?
也许并不清楚这些条件
v1 <- apply(x, 1, paste, collapse="")
chartr(paste(v1, collapse=""), paste(rev(v1), collapse=""), m)
#[1] "ksalwfup"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |