序列生成

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 

感谢您的帮助:
2个回答

3
使用each参数和rep函数来重复每个名称。然后使用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'))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接