2011-09-01 54 views
3

我想打一个清单是这样的:做一个重复的字母数字列表

"A001:A048", "B001:B048", ..., "Z001:Z048", "AA001:AA048", "BB001:BB048", ... 

我看着this thread,但无法弄清楚如何去适应它为我重复字母。

感谢您的帮助。

+5

请不要告诉我那些都是Excel的范围...... –

+0

没有,他们是1536孔板是48x32板地图上的位置。字母是'列',数字是行。我需要索引一些板数据。 – James

+0

哎呀!字母是行(A - AF),数字是列(1 - 48)。 – James

回答

4
c(sprintf("%s001:%s048", LETTERS,LETTERS), 
    sprintf("%s%s001:%s%s048", LETTERS,LETTERS,LETTERS, LETTERS)) 

下面是使用 “索引替代”(我的术语)与sprintf一个例子:

outer(LETTERS, 1:26, FUN=sprintf, fmt="%1$s%1$s%2$03d:%1$s%1$s%2$03d") 
#  [,1]   [,2]   [,3]   [,4]   [,5]   
[1,] "AA001:AA001" "AA002:AA002" "AA003:AA003" "AA004:AA004" "AA005:AA005" 
[2,] "BB001:BB001" "BB002:BB002" "BB003:BB003" "BB004:BB004" "BB005:BB005" 
[3,] "CC001:CC001" "CC002:CC002" "CC003:CC003" "CC004:CC004" "CC005:CC005" 
[4,] "DD001:DD001" "DD002:DD002" "DD003:DD003" "DD004:DD004" "DD005:DD005" 
[5,] "EE001:EE001" "EE002:EE002" "EE003:EE003" "EE004:EE004" "EE005:EE005" 
snipped a couple of pages of output 

而且一个进一步投篮答:AF 1:48组合:

outer(c(LETTERS,paste("A",LETTERS[1:6],sep="")), 
     1:48, 
     FUN=sprintf, 
     fmt="%1$s%1$s%2$03d") 
#----------------------------------- 
# [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  
[1,] "A001" "A002" "A003" "A004" "A005" "A006" "A007" "A008" "A009" "A010" 
[2,] "B001" "B002" "B003" "B004" "B005" "B006" "B007" "B008" "B009" 
    snipped 
     [,41] [,42] [,43] [,44] [,45] [,46] [,47] [,48] 
    snipped 
[31,] "AE041" "AE042" "AE043" "AE044" "AE045" "AE046" "AE047" "AE048" 
[32,] "AF041" "AF042" "AF043" "AF044" "AF045" "AF046" "AF047" "AF048" 
2

我认为这是你想要的,即使你的问题不清楚。我使用sprintf,因为它使填充前导零更容易。

prefix <- c(LETTERS,paste("A",LETTERS[1:6],sep="")) 
out <- sapply(prefix, function(x) sprintf("%s%03d",x,1:48)) 
as.vector(out) # if you want a vector instead 
+0

'out < - outer(前缀,1:48,sprintf,fmt =“%s%03d”)'要简单得多。 (或者是外部的(1:48,前缀,sprintf,fmt =“%2 $ s%1 $ 03d”),这是转置)。 – Marek