代码之家  ›  专栏  ›  技术社区  ›  René Nyffenegger

如何将向量c('foo','bar','baz')转换为c('foo_x','foo_y','bar_x','bar_y','baz_x','baz_y')?[副本]

  •  0
  • René Nyffenegger  · 技术社区  · 6 年前

    这个问题已经有了答案:

    这里有一个简单的向量:

    vec <- c('foo', 'bar', 'baz');
    

    我想加上后缀 _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'))
         });
    

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

         foo     bar     baz    
    [1,] "foo_X" "bar_X" "baz_X"
    [2,] "foo_Y" "bar_Y" "baz_Y"
    

    我能做什么来创建我想要的向量?

    1 回复  |  直到 6 年前
        1
  •  7
  •   Ronak Shah    6 年前

    使用 outer 具有 paste0

    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"