【问题标题】:Concatenate two vectors of strings with specific order以特定顺序连接两个字符串向量
【发布时间】:2020-02-05 09:27:10
【问题描述】:

我想连接两个向量。我已经知道该怎么做,但只有一个问题 - 订单。

所以,我使用下面的函数来链接向量,但输出不是我想要的:

var_names <- c("Tim", "Jack", "Tom")
var_tp<- c("0", "40", "-u")

vec <- paste(rep(var_names, 3), var_tp, sep="_")

输出:

> vec
[1] "Tim_0"   "Jack_40" "Tom_-u"  "Tim_0"   "Jack_40" "Tom_-u"  "Tim_0"   "Jack_40" "Tom_-u"

我想要的输出是保持原始向量中的顺序,优先考虑names 而不是tp

期望的输出:

> vec
[1] "Tim_0"   "Tim_40" "Tim_-u"  "Jack_0"   "Jack_40" "Jack_-u"  "Tom_0"   "Tom_40" "Tom_-u"

【问题讨论】:

标签: r


【解决方案1】:

只需使用每个

vec <- paste(rep(var_names, each=3), var_tp, sep="_")
[1] "Tim_0"   "Tim_40"  "Tim_-u"  "Jack_0"  "Jack_40" "Jack_-u" "Tom_0"   "Tom_40"  "Tom_-u"

【讨论】:

  • 我刚刚使用了help(rep),同时也想通了。我问的太快了。谢谢!
【解决方案2】:

另一种解决方案是使用outer

vec <- c(t(outer(var_names,var_tp,paste, sep = "_")))

这样

> vec
[1] "Tim_0"   "Tim_40"  "Tim_-u"  "Jack_0"  "Jack_40" "Jack_-u"
[7] "Tom_0"   "Tom_40"  "Tom_-u" 

【讨论】:

    【解决方案3】:

    另一种选择可能是:

    unlist(lapply(var_names, paste, sep = "_", var_tp))
    
    [1] "Tim_0"   "Tim_40"  "Tim_-u"  "Jack_0"  "Jack_40" "Jack_-u" "Tom_0"   "Tom_40" 
    [9] "Tom_-u" 
    

    【讨论】:

      猜你喜欢
      • 2014-08-12
      • 1970-01-01
      • 2015-08-29
      • 2019-11-07
      • 2021-06-02
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      • 2016-04-21
      相关资源
      最近更新 更多