2014-08-28 155 views
0

我有一个载体 Names<-c("A", "B", "C")多串粘贴到一个字符串

而且我会最终像这样的事情
c("A_Mean", "A_Median", "A_InGroupVar", "B_Mean", "B_Median", "B_InGroupVar", "C_Mean", "C_Median", "C_InGroupVar")

我曾尝试粘贴功能 c(paste(Names, "_Mean"), paste(Names, "_Median"), paste(Names, "_InGroupvar"))

但我需要的矢量按名称排序。我知道我可以轻松地做到这一点,但我正在寻找更优雅的解决方案。

回答

3

这里是一个原始的办法:

Names <- rep(c("A", "B", "C"), each=3) 
Stats <- rep(c("Mean", "Median", "InGroupVar"), 3) 
paste(Names, Stats, sep="_") 
[1] "A_Mean"  "A_Median"  "A_InGroupVar" "B_Mean"  "B_Median"  
[6] "B_InGroupVar" "C_Mean"  "C_Median"  "C_InGroupVar" 
+0

谢谢,这正是我以后的!似乎很明显现在 – LoveMeow 2014-08-28 03:26:13

+1

你也可以做到这一点,而不必再次调用'rep'。 'paste0(Names,“_”,c(“Mean”,“Median”,“InGroupVar”))' – 2014-08-28 04:57:56

+0

当然,但我故意选择了显示使用'rep'的不同方式。但是谢谢你的贡献。 – 2014-08-28 04:59:58

3

我喜欢sprintf更好地为这个特殊的问题:

Names <- c("A", "B", "C") 

sprintf("%s_%s", 
     rep(Names, each = 3), 
     c("Mean", "Median", "InGroupVar")) 
# [1] "A_Mean"  "A_Median"  "A_InGroupVar" "B_Mean"  
# [5] "B_Median"  "B_InGroupVar" "C_Mean"  "C_Median"  
# [9] "C_InGroupVar" 

另外,这也适用,但给你以不同的顺序结果:

do.call(paste, 
     c(expand.grid(
      Names, c("Mean", "Median", "InGroupVar")), 
      sep = "_")) 
# [1] "A_Mean"  "B_Mean"  "C_Mean"  "A_Median"  
# [5] "B_Median"  "C_Median"  "A_InGroupVar" "B_InGroupVar" 
# [9] "C_InGroupVar" 
相关问题