4
我想要一個函數,當傳遞一個只包含字母的字符串時,通過X字符在字符串中旋轉字符串中的每個字母,其中X是該函數的一個參數。這樣做的著名實例是當X = 13,這是所謂ROT-13在R中實現ROT-13
功能< - 型ROTX(STR中,x){ ?? }
這是一種我期望R嚮導可以在幾行內完成的事情,而我最終會有10個或更多。
我想要一個函數,當傳遞一個只包含字母的字符串時,通過X字符在字符串中旋轉字符串中的每個字母,其中X是該函數的一個參數。這樣做的著名實例是當X = 13,這是所謂ROT-13在R中實現ROT-13
功能< - 型ROTX(STR中,x){ ?? }
這是一種我期望R嚮導可以在幾行內完成的事情,而我最終會有10個或更多。
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)
}
這兩個固定的我在註釋中提到的問題。
見?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)
}
謝謝,這是偉大的 - 除了腐爛('N')產生'' - 空白,當它應該產生'A'。對我來說,這看起來像是一個在charter幫助中的錯誤,在那裏你得到了這個功能 - 假設他們確實打算實現真正的ROT-13。這可以通過省略A定義中的第三個字符串來解決,所以第三行代替A < - c(letter,LETTERS)雖然它與標準ROT-13有所不同,有時將大寫字母變成小寫字母,反之亦然 – 2011-01-20 10:16:43