在R中实施ROT-13

时间:2011-01-20 09:39:25

标签: string r

我想要一个函数,当传递一个只包含字母的字符串时,将字符串中的每个字母通过字母旋转X个字符,其中X是函数的参数。这个着名的例子是当X = 13时,称为ROT-13

function< - ROTx(str,x){ 的 ... }

我希望R精灵可以在几行中做到这一点,而我最终会得到10个或更多。

2 个答案:

答案 0 :(得分:6)

请参阅?chartr(示例部分):

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)
}

或此处http://rosettacode.org/wiki/Rot-13#R

rot13 <- function(x)
{
  old <- paste(letters, LETTERS, collapse="", sep="")
  new <- paste(substr(old, 27, 52), substr(old, 1, 26), sep="")
  chartr(old, new, x)
}

答案 1 :(得分:3)

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)
}

这解决了我在评论中提到的两个问题。