如何将向量c('foo','bar','baz')转换为c('foo_X','foo_Y','bar_X','bar_Y','baz_X','baz_Y')?

Ren*_*ger 0 r vector

这是一个简单的向量:

vec <- c('foo', 'bar', 'baz');
Run Code Online (Sandbox Code Playgroud)

我想补充的后缀_X,并_Y以该向量的每个元素,让我得到一个向量与六大要素:c('foo_X', 'foo_Y', 'bar_X', 'bar_Y', 'baz_X', 'baz_Y')

我希望我可以做到sapply

sapply(vec, function(elem) {
        c(paste0(elem, '_X'),
          paste0(elem, '_Y'))
     });
Run Code Online (Sandbox Code Playgroud)

但是,这将返回矩阵而不是向量:

     foo     bar     baz    
[1,] "foo_X" "bar_X" "baz_X"
[2,] "foo_Y" "bar_Y" "baz_Y"
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能创建想要的载体?

Ron*_*hah 7

使用outerpaste0

vec <- c('foo', 'bar', 'baz')
suffix <- c("_X", "_Y")
c(outer(vec, suffix, paste0))
#[1] "foo_X" "bar_X" "baz_X" "foo_Y" "bar_Y" "baz_Y"
Run Code Online (Sandbox Code Playgroud)