String 在R中执行ROT-13

String 在R中执行ROT-13,string,r,String,R,我想要一个函数,当传递一个只包含字母的字符串时,将字符串中的每个字母在字母表中旋转X个字符,其中X是函数的一个参数。著名的例子是当X=13时,它被称为 功能参见图表(示例部分): rotrotX谢谢,这很好-除了rot('N')产生'''-空格,当它应该产生'A'。对我来说,这看起来像是Charter帮助中的一个错误,您是从那里获得函数的——假设他们确实打算实现真正的ROT-13。这可以通过从A定义中省略第三个字符串来解决,因此第三行是A rot <- function(ch, k = 1

我想要一个函数,当传递一个只包含字母的字符串时,将字符串中的每个字母在字母表中旋转X个字符,其中X是函数的一个参数。著名的例子是当X=13时,它被称为

功能参见图表(示例部分):


rot
rotX谢谢,这很好-除了rot('N')产生'''-空格,当它应该产生'A'。对我来说,这看起来像是Charter帮助中的一个错误,您是从那里获得函数的——假设他们确实打算实现真正的ROT-13。这可以通过从A定义中省略第三个字符串来解决,因此第三行是A
rot <- function(ch, k = 13) {
   p0 <- function(...) paste(c(...), collapse="")
   A <- c(letters, LETTERS, " '")
   I <- seq_len(k)
   chartr(p0(A), p0(c(A[-I], A[I])), ch)
}
rot13 <- function(x)
{
  old <- paste(letters, LETTERS, collapse="", sep="")
  new <- paste(substr(old, 27, 52), substr(old, 1, 26), sep="")
  chartr(old, new, x)
}
rotX <- function(ch,x) 
{ #rotate each letter of a string ch by x letters thru the alphabet, as long as x<=13
  old <- paste(letters, LETTERS, collapse="", sep="")
  new <- paste(substr(old, 2*x+1, 26*2), substr(old, 1, 26), sep="")
  chartr(old, new, ch)
}