2011-11-01 80 views
3

我非常想問這個簡單的問題,但我無法弄清楚。序列生成

我有一個變量

names <- c("M1", "K2L", "C2L", "N", "R_1_2", "CLA", "T123") # the real dataset has > 6000 valriables 

我要加倍的名字,並添加字母「a」和「b」和輸出(考慮順序太)將如下所示:

M1a, M1b, K2La, K2Lb, C2La, C2Lb, Na, Nb, R_1_2a, R_1_2b, CLAa, CLAb, T123a, T123b 

感謝您的幫助:

回答

3

使用repeach參數重複每個名稱。然後使用paste將它們與後綴結合使用。

paste(rep(names, each = 2), c("a", "b"), sep = "") 

讓我們再看看,在慢動作:

suffixes <- c("a", "b") # or letters[1:2] if you're feeling fancy 
n_suffixes <- length(suffixes) 
repeated_names <- rep(names, each = n_suffixes) 
final_names <- paste(repeated_names, suffixes, sep = "") 

花式替代版本使用外產品:

as.vector(t(outer(names, suffixes, paste, sep = ""))) 

雖然我覺得這是更炫耀,因爲它的可讀性較差。

1

使用stringr包的另一解決方案

library(stringr) 
str_c(rep(names, each = 2), c('a', 'b'))